0

我正在DetailView通过我的表视图的委托类推送视图控制器 ( ) MyClassMyClass充当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];

}
4

2 回答 2

0

听起来您需要将推送呼叫返回到您的 MasterView。

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

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

于 2013-06-24T01:21:18.753 回答
0

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

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

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

于 2013-06-23T23:23:46.700 回答