我在 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
StoryBoard : - VC 将添加到 ContainerView
创建要添加的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)
输出:
另请检查您可以尝试的第二个选项
https://stackoverflow.com/a/48274222/6080920
不需要专门为此目的使用容器 View ,也可以使用普通 UIView 检查链接
使用 UIView 的示例项目
https://drive.google.com/open?id=1M12Nv4PLNUePSJFHf7w8b08M2_mWcUEC
使用 ContainerView 的示例项目
关于ios - 访问 socket 时发现为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48294429/