插入子视图时EXC_BAD_ACCESS?(苹果手机)

mis*_*126 2 iphone xcode exc-bad-access ios

当我insertSubview:atIndex:在iPhone上使用该方法时,程序无法运行,并在main.m文件中使用EXC_BAD_ACCESS.但是,当我使用presentModalViewController该程序运行完美.

此外,方法switchToView在第一次使用时工作,具有不同的往返,但第二次没有.

出了什么问题?

这是我的代码:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{    
  ShowBookDetails *sbd = [[ShowBookDetails alloc] initWithNibName:@"ShowBookDetails" bundle:nil];
  [self switchToView:sbd from:self];
}
Run Code Online (Sandbox Code Playgroud)

我的方法看起来像:

-(void)switchToView:(UIViewController*)nextView from:(UIViewController*)currentView
{
  [currentView.view insertSubview:nextView.view atIndex:1];
}
Run Code Online (Sandbox Code Playgroud)

tru*_*cks 5

在这里查看view属性

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

它严格地说明了我在评论中所说的内容:

"每个视图控制器对象是其视图的唯一所有者.您不能将同一视图对象与多个视图控制器对象关联.此规则的唯一例外是容器视图控制器实现可以将此视图作为子视图添加到其自身中在添加子视图之前,容器必须首先调用其addChildViewController:方法,以在两个视图控制器对象之间创建父子关系.

直接来自Apple!