使用 View Controller 作为辅助视图的委托失败,在展开可选时意外发现 nil
Posted
技术标签:
【中文标题】使用 View Controller 作为辅助视图的委托失败,在展开可选时意外发现 nil【英文标题】:Using View Controller as the delegate for an auxilliary view fails with unexpectedly found nil when unwrapping an optional 【发布时间】:2018-09-13 12:35:36 【问题描述】:我有一个名为 CompanyTableView 的视图控制器,它不是主视图控制器 - 虽然这可能无关紧要
CompanyTableView 有一个功能
func getNxtKey() -> Int
return Int(CDM.getMaxID())
该函数调用名为 CDM 的共享实例数据模型类上的函数。
我正在尝试使用 CompanyTableView 作为委托从辅助视图控制器调用该函数 - 这是调用辅助视图的视图控制器
在辅助视图控制器中我有:
var delegate: AnyObject?
然后:
由添加按钮调用:
//添加新联系人或保存编辑的按钮
@IBAction func btnAddCompany(_ sender: Any)
//i have used the following code:
ic = (delegate as! CompanyTableView).getNxtKey()
此时执行失败,在解包可选时意外发现错误为零
【问题讨论】:
你在哪里初始化delegate
属性?
我刚刚意识到我的错误。我没有准备好目标控制器委托是自我的目标
您可以回答自己的问题。可能对其他开发人员有用。
【参考方案1】:
我是 Stack Overflow 的新手,很抱歉,我不知道回答您自己问题的礼仪。
我犯的错误是,在为 segue 做准备时,我没有指定目标视图控制器的委托是 self。
代码如下:
//设置目标控制器并将表示的对象作为repObj传递 让 auxView = segue.destinationController 为! 添加公司控制器 auxView.delegate = self auxView.representedObject = repObj
一旦我添加了 auxView.delegate = self,一切都按预期工作
【讨论】:
以上是关于使用 View Controller 作为辅助视图的委托失败,在展开可选时意外发现 nil的主要内容,如果未能解决你的问题,请参考以下文章
在UITabBarController之前呈现Login View Controller
Pager View Controller 的根视图的大小与后续 View Controller 的大小不同
Model-View-Controller MVC 设计模式
从View Controller调用dismissViewControllerAnimated后刷新View Controller