如何跳转到detailview中的下一行

时间:2011-10-24 10:53:09

标签: ios uitableview core-data row nsfetchedresultscontroller

我有一个TableView,它在didSelectRow中加载了一个detailview。我对数据没有任何问题。 我正在使用coreData并填充TableView我正在使用NSFetchedResultsController。

现在,我想在detailView 中创建next和previous函数,以跳转到下一个或上一个Table(row)元素。像邮件应用程序一样 我知道我必须使用带有IBAction的按钮。

但我该如何使用此功能?

感谢,
brush51

编辑1: 我这样做了:

- (IBAction) previousCard:(id) sender {  
    NSLog(@"previousBtn");

DashboardViewController *parent = (DashboardViewController *)self.parentViewController;

NSIndexPath *actualIndexPath = selectedRow2;
NSIndexPath * newIndexPath = [NSIndexPath  indexPathForRow:actualIndexPath.row-1 inSection:actualIndexPath.section];
NSLog(@"newIndexPath: %@", newIndexPath);
[parent.tableViews selectRowAtIndexPath:newIndexPath animated:YES scrollPosition:UITableViewScrollPositionMiddle]; //HERE I GET SIGABRT

}

但是我收到了一个错误:

-[UIViewController tableViews]: unrecognized selector sent to instance 0xd758ae0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController tableViews]: unrecognized selector sent to instance 0xd758ae0'  

如何解决这个问题?

3 个答案:

答案 0 :(得分:10)

使用您的UITableView,您可以通过以下方式获取所选行:

- (NSIndexPath *)indexPathForSelectedRow

通过递增indexPath.row来设置选择:

- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition

然后你的行动可能是:

-(IBAction)nextCell:(id)sender {
  NSIndexPath * actualIndexPath = myTableView.indexPathForSelectedRow;
  NSIndexPath * newIndexPath = [NSIndexPath  indexPathForRow:actualIndexPath.row+1 inSection:actualIndexPath.section];
  [myTableView selectRowAtIndexPath:newIndexPath animated:YES scrollPosition:UITableViewScrollPositionMiddle];
}

答案 1 :(得分:1)

您可以使用DataSource数组进行管理。

当你加载详细信息视图时,你传递了数组的索引(indexPath.row)。通过该索引,您可以在详细信息视图中获取数据。并使用该索引中的递增和递减,您可以获得下一个和上一个单元格的数据。

<强>步骤

1)设置你的tableView。

2)当重定向到DetailView时,为store current indexPath.row设置一个int变量。所以详细定义一个int View。

3)使用next和previous按钮管理indexpath.row,它位于int变量中。 并表示来自Source数组的适当数据。

答案 2 :(得分:0)

您可以使用:

(UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath

获取所需的单元格(下一页或上一页)。

然后将返回的单元格“Selected”属性设置为YES。

cell.selected = YES