在阅读了与此相关的多个主题后,我只能得出结论,我必须在错误的时间设置我的委托,但我无法弄清楚在哪里指派代理来解决这个问题。
我在主页中选择一个表行时替换了详细视图控制器,如下所示:
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
CustomerDetailViewController *newvc = [[CustomerDetailViewController alloc] initWithNibName:@"CustomerDetailViewController" bundle:nil withCustomer:[custData objectForKey:@"name"]];
[app.detailNavigationController setViewControllers:[NSArray arrayWithObjects:newvc, nil]];
这将设置视图控制器。在CustomerDetailViewController中,我像这样分配委托:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
app.splitViewController.delegate = self;
}
return self;
}
如果在纵向模式中选择了表格行,我不会出现barbuttonitem。但是,如果我旋转到横向然后再回到纵向,则会出现barbuttonitem。
我认为在initWithNibName中设置我的委托会解决这个问题,但显然不是。
有人能告诉我在何处/何时分配代表?