所以我试图通过这样做简单地遍历到表格视图的下一级:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 1) {
FiltersController *aFiltersCont = [[FiltersController alloc] init];
aFiltersCont.displayedFilters = [appDelegate.groupedBusiness allKeys];
aFiltersCont.currentLevel = self.currentLevel + 1;
[self.navigationController pushViewController:self animated:YES];
}
}
有什么理由说这不会推动控制器?之前我遇到过类似的问题,但是通过模态显示视图解决了这个问题。但是,这一次,这是一个弹出窗口,需要滑动到该弹出框内的下一个屏幕。有任何想法吗?提前谢谢。
好的我打算在这里添加更多资源来尝试帮助...
在主视图控制器中,我有这个代码从按钮进行弹出:
// Create and configure the filters controller.
FiltersController *aFiltersController = [[FiltersController alloc] initWithStyle:UITableViewStylePlain];
self.filtersController = aFiltersController;
filtersController.appDelegate = self.appDelegate;
UINavigationController *filtersNavController = [[UINavigationController alloc] initWithRootViewController:filtersController];
UIPopoverController *filtersPopover = [[UIPopoverController alloc] initWithContentViewController:filtersNavController];
self.filtersPopoverController = filtersPopover;
filtersPopoverController.delegate = self;
然后我有我在filtersController类中首次发布的代码。这些帮助有用?
答案 0 :(得分:1)
[self.navigationController pushViewController:self animated:YES];
应该是
[self.navigationController pushViewController:aFiltersCont animated:YES];
答案 1 :(得分:0)
您正在推送self
,这是对当前视图控制器的引用。如果aFiltersCont
是您要尝试钻取的viewController,则应该使用push将行更改为以下内容。
[self.navigationController pushViewController:aFiltersCont animated:YES];
答案 2 :(得分:0)
您可能会对索引感到困惑。第一个索引是0而不是1,所以也许你想要indexPath.row == 0
?
此外,您应该在返回之前释放aFiltersCont
(每次运行此方法时,您都会泄漏FiltersController
及其拥有的任何内容。
也许这个?
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 0) {
FiltersController *aFiltersCont = [[[FiltersController alloc] init] autorelease];
aFiltersCont.displayedFilters = [appDelegate.groupedBusiness allKeys];
aFiltersCont.currentLevel = self.currentLevel + 1;
[self.navigationController pushViewController:aFiltersCont animated:YES];
}
}
答案 3 :(得分:0)
如果您只是在UITableViewController
内显示UIPopoverController
的次级,则不会自动为您创建UINavigationController
。您可能需要使用以下内容修改创建UIPopoverController
的代码:
MyTableViewController *table = [[[MYTableViewController alloc] init] autorelease];
UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:table] autorelease];
myPopover = [[UIPopoverController alloc] initWithContentViewController:nav];
然后你应该能够在堆栈上推送和弹出导航控制器没问题。