使用UITableView和详细视图进行导航

时间:2011-02-05 17:42:18

标签: iphone cocoa-touch uinavigationcontroller uitableview

我确信这是一个直接的应用程序,但不确定最好的方法是什么(这是全新的)。我有一个带有UITableViewController的导航控制器(都在UITabViewController中运行)。

当用户点击一行时,App会进入详细视图。现在我尝试链接左右滑动手势以导航到上一个和下一个记录。但是在详细视图中执行此操作的正确方法是什么,最简单的方法是将链接返回到我的TableViewController?

一个相关的问题是如何将“下拉”链接到与导航控制器的“后退”按钮相同的操作。

我希望上述内容有道理。提前感谢一百万!


我有一些与我喜欢的方式有关的东西,但它非常笨拙。 当调用DetailView时,我将参数传递给'self'和当前'selectedRow'。然后在进行滑动时,我在tabelViewController上调用函数'moveToNextRecord'(提供指针)并将selectedRow作为参数。在tableViewController中,我然后调用selectRowAtIndexPath和didSelectRowAtIndexPath。

-(void)moveToNextRecord:(NSIndexPath*) selectedRow{
    //[self.navigationController popViewControllerAnimated:YES];
    //NSIndexPath *selectedRow = [self.tableView indexPathForSelectedRow];
    NSUInteger row = selectedRow.row;
    NSUInteger section = selectedRow.section;
    ++row;
    if(row >= [self.tableView numberOfRowsInSection:selectedRow.section])
    {
        row = 0;
        ++section;
        if(section >= [self.tableView numberOfSections])
        {
            row = 0;
            section = 0;
        }
    }
    [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:section] animated:YES scrollPosition:UITableViewScrollPositionMiddle];
    [self tableView:self.tableView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:section]];
}

这似乎有效,但问题是下一条记录是在前一条记录之后插入的。这意味着后退按钮将我带回到上一个记录而不是返回到表格视图。所以我想我应该告诉ViewController我不想堆叠它们,但基本上我要回去然后选择下一行,同时直接从一个detailView到下一个显示动画。这有道理吗?

([self.navigationController popViewControllerAnimated:YES]因为第一部小说似乎不起作用,因为它没有正确的流程。)

2 个答案:

答案 0 :(得分:0)

从详细视图中,一旦识别出手势,请致电:

[self.navigationController popViewControllerAnimated:YES];

这将导航回来。

答案 1 :(得分:0)

我正在向一个PageControl解决方案迈进,因为它是一个非常改进的用户体验,因为页面实际上在用户滑动的同时移动。根据上述建议,我需要覆盖“后退”按钮,并手动填充ViewController堆栈,以便在进行正确滑动时允许从左向右转换(并且仅在滑动完成时发生)