Search code examples
iosuitableviewcore-datarownsfetchedresultscontroller

How to jump to the next row in detailview


i have a TableView which loads a detailview in didSelectRow. I have no problems with the data's. I am using coreData and to populate the TableView i am using a NSFetchedResultsController.

Now, i want to make a next and previous function in the detailView to jump to the next or previous Table(row) Element. Next Previous like in the Mail-App.
I know that i have to use a button with IBAction.

But how can i make this function?

thanks,
brush51

Edit 1: I have it done so:

- (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

}

But i get an error:

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

How to solve this?


Solution

  • With your UITableView, you can get the selected row by:

    - (NSIndexPath *)indexPathForSelectedRow
    

    And set the selection by incrementing the indexPath.row:

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

    then you action could be:

    -(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];
    }