How to jump to the next row in detailview

Refresh

December 2018

Views

3.6k time

3

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?

3 answers

1

для этого вы можете управлять с помощью массива DataSource.

когда вы загрузите подробный вид в то время вы передаете ваш индекс массива (indexPath.row). по этому показателю вы выборки данных в подробном представлении. и с помощью увеличения и уменьшения этого индекса вы получите данные для следующей и предыдущей ячейки.

меры

1) настроить ваш Tableview.

2) когда перенаправлять DetailView в то время установить одну ИНТ переменную для хранения текущего indexPath.row. поэтому определить один Int в Detail View.

3) с помощью следующей и предыдущей кнопки управления indexpath.row, которая находится в переменной Int. и представляют соответствующие данные из исходного массива.

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

Ты можешь использовать:

(UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath

Для того, чтобы получить ячейку, которую хотите (следующий или предыдущий).

А затем установить возвращаемые ячейки «Selected» свойство YES.

cell.selected = YES