ios应用程序正在崩溃

时间:2010-12-13 22:45:21

标签: iphone ios crash

我的应用崩溃时出现问题。主根控制器是选项卡控制器。在标签控制器内部我有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];

}

4 个答案:

答案 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。否则你可能会释​​放一个自动释放的实例,这会导致它崩溃。

解决此问题,如果仍然发生,请发布结果,我们会再看看。