我正在通过我的表视图的委托类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];
}
答案 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的导航控制器肯定会给您带来奇怪的结果。