遍历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。
这是我的prepareForSegue
TableViewController
:
-(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 通过
传递给 detailViewControllerdvController.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
MPMoviePlayerController - 检测按下 Next/Prev 按钮
Google rel="next/prev" 用于动态分页?