在应用程序启动时禁用导航栏按钮

时间:2013-08-09 19:33:15

标签: ios uibarbuttonitem uinavigationitem

我有一个应用程序,需要在启动应用程序时选择要使用的客户端。我正在从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;
}

但是,第一次启动时按钮仍然处于启用状态。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

调用prepareForSegue时,尚未加载视图。如果在方法期间没有做任何事情,那么视图将不会被加载到以后。如果视图尚未加载,则出口不可用(它们尚未加载)。因此,问题是您尝试禁用的按钮尚不存在。

在目标控制器上设置一个标志,以便在尝试设置任何视图属性之前禁用viewDidLoad中的按钮或确保已加载视图。