Ios 在嵌入导航控制器的UITableViewController中使用UINavigationBarDelegate

Ios 在嵌入导航控制器的UITableViewController中使用UINavigationBarDelegate,ios,uinavigationcontroller,uitabbarcontroller,uinavigationbar,uinavigationitem,Ios,Uinavigationcontroller,Uitabbarcontroller,Uinavigationbar,Uinavigationitem,我在序列图像板内的表视图控制器中嵌入了导航控制器: 已为表视图控制器分配了从UITableViewController继承的自定义类(在标识检查器处): @interface TableClass : UITableViewController 我试图实现的是从UINavigationBarDelegate获取事件,特别是这个事件: - (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationI

我在序列图像板内的表视图控制器中嵌入了导航控制器:

已为表视图控制器分配了从UITableViewController继承的自定义类(在标识检查器处):

@interface TableClass : UITableViewController
我试图实现的是从UINavigationBarDelegate获取事件,特别是这个事件:

- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item;
显然,继承协议将不起作用,因为TableClass继承自UITableViewController和UINavigationController

我能做些什么才能从UINavigationBarDelegate获取事件

多谢各位

编辑-不同的解决方案:

由于“后退”按钮是由框架自动创建的,因此我决定自己创建按钮:

- (void)viewDidLoad {
[super viewDidLoad];

if ([[[someClass instance] stack] count] > 0) {
    NSString *titleBackName = [NSString stringWithFormat:@"%@", [[someClass instance] peakFromStack]];
    UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle:titleBackName style:UIBarButtonItemStyleBordered target:self action:@selector(back:)];
    self.navigationItem.leftBarButtonItem=newBackButton;
   }
}
这意味着我在导航栏中指定了一个新的后退按钮,当用户点击它时,它将执行此方法:

-(void)back:(UIBarButtonItem *)sender {
    [self.navigationController popViewControllerAnimated:YES];
}
这基本上意味着我现在自己实现了pop和添加到导航视图控制器的堆栈中


仍在寻找代理解决方案。是否已尝试将TableClass设置为代理?例如,在TableClass'viewDidLoad()
self.navigationController.navigationBar.delegate=self
。这显然会使TableClass成为将在navigationController中推送或弹出的任何其他控制器的委托。如果您对此不满意,我可以在完整答案中写下另一个稍微复杂一点的选项。是的,您应该尝试一下,看看是哪种异常/错误导致应用程序崩溃。您是否尝试过简单地将TableClass设置为委托?例如,在TableClass'viewDidLoad()
self.navigationController.navigationBar.delegate=self
。这显然会使TableClass成为将在navigationController中推送或弹出的任何其他控制器的委托。如果你对此不满意,我可以在完整答案中写下另一个稍微复杂一点的选项。是的,你应该尝试一下,看看是什么样的异常/错误导致了应用程序崩溃。