ios - 访问 socket 时发现为零

标签 ios swift storyboard iboutlet

我在 Storyboard中创建了一个 containerView,我将 cntrl 拖动到他的 View Controller 并创建了一个 IBOutlet。

尝试访问此 socket 时出现错误

found nil while unwrapping.

class NavigationController: UIViewController {

    @IBOutlet weak var containerView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let storyboard = UIStoryboard(name: "Main", bundle: nil)

        controller1  = storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController

        controller1.delegate=self

        self.containerView.addSubview(controller1.view)
    }
}

我可以确认它已连接,因为我看到了 socket 的点,并且当在编辑器上触摸它时,它会在 Storyboard上闪烁。

尝试过清理、删除和其他任何操作。

尝试在viewWillAppear(_animated: Bool)中加载将得到相同的结果。

最佳答案

试试这个

我的出路:

@IBOutlet weak var containerView: UIView!

我的 Storyboard:- VC 与 ContainerView

enter image description here

StoryBoard : - VC 将添加到 ContainerView

enter image description here

创建要添加的ViewController对象

private lazy var FirstObject: VC1 =
    {
        // Instantiate View Controller
        let viewController = self.storyboard?.instantiateViewController(withIdentifier: "VC1") as! VC1
        
        // Add View Controller as Child View Controller
        self.addChildViewController(viewController)
        return viewController
    }()

创建将在容器 View 中添加 VC 对象的函数

private func add1(asChildViewController viewController: UIViewController)
    {
        // Configure Child View
        viewController.view.frame = CGRect(x: 0, y: 0, width: self.containerView.frame.size.width, height: self.containerView.frame.size.height)
        
        // Add Child View Controller
        addChildViewController(viewController)
        viewController.view.translatesAutoresizingMaskIntoConstraints = true
        
        // Add Child View as Subview
        containerView.addSubview(viewController.view)
        
        // Notify Child View Controller
        viewController.didMove(toParentViewController: self)
    }

现在在 DidLoad 中只需调用

self.add1(asChildViewController: FirstObject)

输出:

enter image description here

另请检查您可以尝试的第二个选项

https://stackoverflow.com/a/48274222/6080920

不需要专门为此目的使用容器 View ,也可以使用普通 UIView 检查链接

使用 UIView 的示例项目

https://drive.google.com/open?id=1M12Nv4PLNUePSJFHf7w8b08M2_mWcUEC

使用 ContainerView 的示例项目

https://github.com/iOS-Geek/ContainerViews.git

关于ios - 访问 socket 时发现为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48294429/

相关文章:

ios - 如何根据 UITextField 禁用 UIAlertAction?

objective-c - 使用 Storyboard 时获取 NSManagedObjectContext

ios - 重新加载时 TableView 标题向下移动。 Swift-iOS

ios - 在 xcode 7 ios9 中未触发展开 segue Action

ios - AWSS3GetObjectRequest ifModifiedSince 不起作用

ios - Xcode 找不到 XMPPFramework——如何修复链接器错误?

ios - 生成 ios Storyboard

ios - 获取 View 的导航栏颜色不起作用

ios - Google map 未在 Today Extension iOS 上显示

swift - 区分记录更改和 Firebase 中删除的数据