视图推送后禁用导航栏上的“后退”按钮

时间:2013-06-23 23:21:15

标签: ios objective-c cocoa-touch

我正在通过我的表视图的委托类DetailView推送一个视图控制器(MyClass)。 MyClass充当MasterView中表格视图的委托。我试图从DetailView的“didSelectRowAtIndexPath:”方法中推送MyClass,但每按一次DetailView,前导回MasterView的后退按钮就会被禁用。

推送视图的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

if (!detailViewController) {
    detailViewController = [[DetailViewController alloc] init];
}

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.navigationController pushViewController:detailViewController animated:YES];

}

2 个答案:

答案 0 :(得分:0)

而不是[appDelegate.navigationController pushViewController:detailViewController animated:YES];,请使用[self.navigationController pushViewController:detailViewController animated:YES];

听起来appDelegate的导航控制器与MasterView的导航控制器不同,这可以解释奇怪的行为。

使用self.navigationController将另一个视图控制器推到MasterView导航控制器堆栈的顶部。

答案 1 :(得分:0)

听起来你需要将你的回调召唤回MasterView。

您可以通过在MyClass中设置协议并使用通知中心通过从MyClass到MasterView的委托(这使得一个奇怪的来回委托模式)触发回调来执行此操作(如果多个可能有用)视图需要知道此推送正在发生),或者在初始化MyClass时传入对MasterView的引用并将其用于推送。

无论您选择什么,尝试使用AppDelegate的导航控制器肯定会给您带来奇怪的结果。