替换DetailViewController时UIBarButtonItem消失,旋转后重新出现

时间:2012-11-01 18:20:45

标签: objective-c ios delegates uisplitviewcontroller

在阅读了与此相关的多个主题后,我只能得出结论,我必须在错误的时间设置我的委托,但我无法弄清楚在哪里指派代理来解决这个问题。

我在主页中选择一个表行时替换了详细视图控制器,如下所示:

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中设置我的委托会解决这个问题,但显然不是。

有人能告诉我在何处/何时分配代表?

1 个答案:

答案 0 :(得分:0)

我相信我找到了解决方案 - 它似乎与this问题重复。