0

所以我有一个名为“TopNewsViewController”的 ViewController 类。它从 RootViewController 被推入 NavigationController 堆栈。

在 TopNewsViewController 中,我有一个通过单击按钮出现的弹出窗口。它显示来自 PopOver 的表格视图。

现在,在 PopOver 中的 tableView:didSelectRowAtIndexPath 方法中,我希望它修改 TopNewsViewController 的一些属性并将其重新推送到导航堆栈。我正在实现该方法如下:

TopNewsViewController *topNewsViewController = [[[TopNewsViewController alloc] initWithNibName:@"TopNewsViewController" bundle:nil] autorelease];

NSString *feedStr = [rootViewController.feeds objectAtIndex:rowNumber];
[rootViewController release];
NSArray *thisFeed = [NSArray arrayWithObjects:feedStr, nil];
topNewsViewController.feeds = thisFeed;
topNewsViewController.pageTitle = [categories objectAtIndex:rowNumber];
[self.navigationController pushViewController:topNewsViewController animated:YES];
[tableView deselectRowAtIndexPath:indexPath animated:YES];

我意识到这不起作用,因为当 PopOver 不是 ViewController 而是 UITableViewController 时,我使用的是“self.navigationController”。我尝试改用“topNewsViewController.navigationController”,但没有奏效。

有人对如何实施它有任何建议吗?非常感谢帮助/建议!

4

1 回答 1

1

如果我正确理解您,我认为您最好的选择是在您的Popover的Uitable ViewController中实现一名代表,以便在选择记录时,它调用了将选择交给您的rootviewController的委托方法。然后 RootViewController 将处理您想要使用的任何新 TopNewsViewControllers 的推送和弹出。您在此处创建的新 TopNewsViewController 默认没有导航控制器,这就是它不起作用的原因。

So, your root view controller becomes the delegate of your popover view controller... when a row is selected, it says "popOver:didSelectRow:" and then RootViewController dismisses the popover and "does the right thing"(tm).

于 2011-04-13T23:18:31.983 回答