2 for 2012 for_2012 于 2013.01.18 13:21 提问

检测视图控制器是否退出

我有一段代码用来检测ViewController,具体是在另一个Navigation Stack中的VC弹出时执行:

- (void) leftViewDidHide{
    if ([((AppDelegate *)[UIApplication sharedApplication].delegate).frontViewController.navigationController.viewControllers objectAtIndex:1]) {
    SGServerListViewController *sample = [[[((AppDelegate *)[UIApplication sharedApplication].delegate).frontViewController.navigationController.viewControllers objectAtIndex:1]childViewControllers] objectAtIndex:0];
    [sample.serverTableView setUserInteractionEnabled:YES];
    }
}

然而运行之后程序就会崩溃,异常出在if语句哪行。不知道怎么解决这个问题?我只需要检测是否这个视图控制器在执行代码,谢谢帮忙

补充:

异常是: out of bounds

3个回答

Kill_it
Kill_it   2013.01.18 13:59
已采纳
- (void) leftViewDidHide{

if ([((AppDelegate *)[UIApplication sharedApplication].delegate).frontViewController.navigationController.viewControllers count] == 1) {
SGServerListViewController *sample = [[[((AppDelegate *)[UIApplication sharedApplication].delegate).frontViewController.navigationController.viewControllers objectAtIndex:1]childViewControllers] objectAtIndex:0];
[sample.serverTableView setUserInteractionEnabled:YES];
}

}

xinyoulingxi1_tong
xinyoulingxi1_tong   2013.01.18 13:53
NSArray *viewControlles = [self.navigationController.viewControllers];

for (int i = 0 ; i <viewControlles.count; i++){ 
  if ([YourVC isKindOfClass:[viewControlles objectAtIndex:i]]) {
          //Execute your code
      }
}
ccf0703
ccf0703   2013.01.18 13:58

只有这一段代码没看出什么。还是好好调试下看看。
会不会是数组越界呢?

另,这段代码的风格实在不敢恭维。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!