我的应用崩溃时出现问题。主根控制器是选项卡控制器。在标签控制器内部我有4个按钮,它们连接了导航控制器。在导航控制器内部,我有一个带有几个单元格的表控制器。单击一个单元格时,它会将您带到视图控制器。现在,当我点击单元格,它将我带到视图控制器。当我点击导航控制器上的后退箭头时,它会将我带回到表视图,这很棒,但是当我点击一个新单元格时,应用程序崩溃了。每次我点击一个单元格,返回,然后单击另一个单元格,应用程序崩溃。我究竟做错了什么?我想我太关心我的所有发布了。但不确定。
我运行程序时遇到错误。它写着:
Book Nav Controller(Medical How To)将“NIB Name”属性设置为“BookTableViewController.nib”,但此视图控制器不打算以这种方式设置其视图。
我也在这段代码上弃用了setText:
cell.text = [breakdownArray objectAtIndex:row];
我将它更改为什么?
我的didSelectRowAtIndexPath代码也是:
NSInteger row = [indexPath row];
if (self.bookDetailViewController == nil); {
BookDetailViewController *aBookDetail = [[BookDetailViewController alloc] initWithNibName:@"BookDetailView" bundle:nil];
self.bookDetailViewController = aBookDetail;
[aBookDetail release];
}
bookDetailViewController.title = [NSString stringWithFormat:@"%Breakdown" , [breakdownArray objectAtIndex:row]];
Surviving2012AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.breakdownNavController pushViewController:bookDetailViewController animated:YES];
[delegate release];
}
答案 0 :(得分:0)
cell.text = [breakdownArray objectAtIndex:row];
应该是:
cell.textLabel.text = [breakdownArray objectAtIndex:row];
bookDetailViewController.title = [NSString stringWithFormat:@"%Breakdown" , [breakdownArray objectAtIndex:row]];
应该是:
bookDetailViewController.title = [NSString stringWithFormat:@"%@", [breakdownArray objectAtIndex:row]];
如果你是从tabBarController中的一个viewControllers调用它,那么:
Surviving2012AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.breakdownNavController pushViewController:bookDetailViewController animated:YES];
[delegate release];
应该是:
[self.navigationController pushViewController:bookDetailViewController animated:YES];
如果它之后仍然崩溃,那么你需要发布你的定义方式:
.h文件中的bookDetailViewController,以及viewWillAppear和viewDidLoad方法的内容。
答案 1 :(得分:0)
至于您弃用的方法:
将其更改为:
cell.textlabe.text = [breakdownArray objectAtIndex:row];
我不知道这个:
Surviving2012AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.breakdownNavController pushViewController:bookDetailViewController animated:YES];
[delegate release];
你说你在每个标签中都有一个navigationController?那你为什么不用呢?
[self.navigationController pushViewController:bookDetailViewController
animated:YES];
答案 2 :(得分:0)
Apple的iOS参考库 - 可在Xcode下的Help-> Developer Documentation中找到 - 非常明确地列出了用以下内容替换弃用的.text属性的内容: .textLabel and .detailTextLabel 。
答案 3 :(得分:0)
绝对不要在委托上调用release。 您只在对象上使用方法时调用对象的释放,其中包含: alloc / init,copy,new或retain。否则你可能会释放一个自动释放的实例,这会导致它崩溃。
解决此问题,如果仍然发生,请发布结果,我们会再看看。