-1

我有一个应用程序需要在启动应用程序时选择要使用的客户端。我正在启动从应用程序委托到允许用户进行选择的模态视图的转场。该视图有一个左栏按钮,上面写着“取消”并关闭了该视图。我希望在用户第一次选择客户端时禁用此功能,但在用户打开客户端选择窗格的所有后续时间都启用此功能。

我在名为 cancelButton 的选择客户端视图中有一个 IBOutlet。

在启动 segue 的视图控制器中的 prepareForSegue 方法中,我有

if ([segue.identifier isEqualToString:@"selectClient"]) {
 if (firstSegue) {
    SelectClientViewController *select = (SelectClientViewController *)segue.destinationViewController;
    select.cancelButton.enabled = NO;
 }
 firstSegue = NO;
}

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

4

1 回答 1

1

何时prepareForSegue调用视图尚未加载。如果您在该方法期间不执行任何操作,则视图将在稍后加载。如果视图尚未加载,则插座不可用(它们也尚未加载)。因此,问题在于您尝试禁用的按钮尚不存在。

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

于 2013-08-09T22:48:53.263 回答