遍历tableview的iOS Next/Previous Button

Posted

技术标签:

【中文标题】遍历tableview的iOS Next/Previous Button【英文标题】:iOS Next/Previous Button that iterates through tableview 【发布时间】:2012-10-31 14:53:16 【问题描述】:

我有一个由 plist 填充的 tableview,当单击单元格时,detailViewController 中的 textview 将填充 plist 中关联值的字符串。

所有这一切都完美无缺,但是现在我想在 detailViewController 中添加上一个和下一个按钮,这将遍历 tableview。

这是我的prepareForSegueTableViewController

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 


    if ([segue.identifier isEqualToString:@"promisePush"])
    
        NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
        NSInteger section = [indexPath section];
        NSString *key = [uniqueArray objectAtIndex:section];

        NSArray *nameSection = [sections objectForKey:key];
        NSDictionary *dictionary = [nameSection objectAtIndex:indexPath.row];

        DetailViewController *dvController = [segue destinationViewController];

        //dvController.array = titles;

        dvController.selectedRow = indexPath.row;
        dvController.titleCat = [dictionary valueForKey:@"Title"];
        dvController.kjvText = [dictionary valueForKey:@"kjvText"];
        dvController.nkjvText = [dictionary valueForKey:@"nkjvText"];
        dvController.nivText = [dictionary valueForKey:@"nivText"];
        dvController.verse = [dictionary valueForKey:@"verse"];

        UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Promises" style:UIBarButtonItemStyleBordered target:nil action:nil];

       self.navigationItem.backBarButtonItem = backButton;
    

现在kjvText被传递给detailViewController中名为txtdText的textView

[txtdText setText:nkjvText];

我能够将 indexPath.row 通过

传递给 detailViewController

dvController.selectedRow = indexPath.row;

并且可以将int迭代到下一个数字

- (IBAction)nextPromise:(UIButton *)sender 
    selectedRow = selectedRow + 1;

但我不知道如何将该数字传达给 tableView 中的下一个 indexPath.row,它将更新 detailViewController 中的 textView。

我觉得我需要将 TableViewController 设置为我的 DetailViewController 的委托,但我不确定那会是什么样子。非常感谢任何方向!

【问题讨论】:

【参考方案1】:

如果我理解正确,您不能简单地在您的 UITableView 上调用以下方法吗?

[UITableView selectRowAtIndexPath:animated:scrollPosition:]

这会选择接收器中由索引路径标识的行,可选择将行滚动到接收器中的某个位置。请参阅 UITableView 上的文档。

【讨论】:

该方法需要从 DetailViewController 调用回 TableViewController,然后需要将下一行的更新文本传回 DetailViewController 以更新 textView。似乎需要实现一个委托。 我假设您的 DetailViewController 中有一个 IBOutlet,用于存储对 UITableViewController 的引用。关于将数据传回 DetailViewController,我假设已经有一种机制可以在点击单元格时执行此操作。上面的方法相当于点击一个单元格,所以那些现有的机制应该可以正常工作。 我不确定您对从我的 DetailViewController 到我的 UITableViewController 的 IBOutlet 是什么意思。那是两个独立的 ViewController,IBOutlet 只是将事物连接到它自己的 ViewController。我有一个从 UITableViewController 到我的 DetailViewController 的 segue。 你能在目标视图控制器(detailviewcontroler)上创建一个属性,然后在segue中,保存对源视图控制器的引用吗?这将使您可以访问源视图控制器上任何公开的属性方法。鉴于您确实需要注意 tableview 中的端点,您可能希望在 tableviewcontroller 中公开一个方法,detailviewcontroller 调用该方法以选择下一行。此外,鉴于这是一个主/细节场景,两个视图控制器都应该始终在内存中,因此从细节到主控的强引用应该是可以的。

以上是关于遍历tableview的iOS Next/Previous Button的主要内容,如果未能解决你的问题,请参考以下文章

遍历tableview的iOS Next/Previous Button

树状结构TableView中向上遍历到叶子节点iOS

MPMoviePlayerController - 检测按下 Next/Prev 按钮

Google rel="next/prev" 用于动态分页?

为啥 jCarousel Next/Prev 按钮在添加项目后未启用

MySQL 自联接表 Next/Prev 行性能