我有一个应用程序,需要在启动应用程序时选择要使用的客户端。我正在从app委托创建一个segue到一个模态视图,允许用户进行选择。该视图有一个左侧栏按钮,显示“取消”并取消该视图。我希望在用户首次选择客户端时禁用此功能,但要在用户打开客户端选择窗格的所有后续时间启用此功能。
我在select client视图中有一个名为cancelButton的IBOutlet。
在启动segue的视图控制器中的prepareForSegue方法中,我有
if ([segue.identifier isEqualToString:@"selectClient"]) {
if (firstSegue) {
SelectClientViewController *select = (SelectClientViewController *)segue.destinationViewController;
select.cancelButton.enabled = NO;
}
firstSegue = NO;
}
但是,第一次启动时按钮仍然处于启用状态。任何帮助将不胜感激。
答案 0 :(得分:1)
调用prepareForSegue
时,尚未加载视图。如果在方法期间没有做任何事情,那么视图将不会被加载到以后。如果视图尚未加载,则出口不可用(它们尚未加载)。因此,问题是您尝试禁用的按钮尚不存在。
在目标控制器上设置一个标志,以便在尝试设置任何视图属性之前禁用viewDidLoad
中的按钮或确保已加载视图。