1

我们有一个自定义的 QLPreviewController 实现,因此我们可以控制呈现给用户的按钮及其操作。我viewWillAppear在自定义类的方法中添加了以下代码:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(openWithPressed:)];
    UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissPressed:)];
    [self.navigationItem setRightBarButtonItem:rightBarButtonItem];
    [self.navigationItem setLeftBarButtonItem:leftBarButtonItem];
    [rightBarButtonItem release];
    [leftBarButtonItem release];
}

预览器确实与我们的自定义按钮一起出现,并且它们按预期工作。
当用户单击“主页”按钮时,就会出现我们的问题。它接缝该UIApplication.doEvents方法调用navigationItem设置按钮方法,并将它们重置为原始值(使用原始处理程序)。
我怎样才能防止这种情况发生,或者自己处理这些事件,并用我自己的自定义按钮覆盖它们?

4

1 回答 1

2

我有同样的问题。您需要设置一个 NSNotification 在应用程序再次变为活动状态时调用它,然后将导航栏重置为您想要的方式

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(configureNavBar)
                                             name:UIApplicationDidBecomeActiveNotification object:nil];
于 2012-05-18T20:28:27.837 回答