Как перейти к следующему ряду в detailview - PullRequest
3 голосов
/ 24 октября 2011

У меня есть TableView, который загружает подробный вид в didSelectRow.У меня нет проблем с данными.Я использую coreData и для заполнения TableView я использую NSFetchedResultsController.

Теперь я хочу сделать следующую и предыдущую функцию в detailView , чтобы перейти к следующему или предыдущему элементу таблицы (строки).Следующая Предыдущая как в Mail-App.
Я знаю, что мне нужно использовать кнопку с 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 ]

10 голосов
/ 24 октября 2011

С помощью UITableView вы можете получить выбранную строку:

-(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 голос
/ 25 октября 2011

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

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

Шаги

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

2) при перенаправлении в DetailView в это время установить одну переменную int для сохранения текущего indexPath.row,поэтому определите один int в подробном представлении.

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

0 голосов
/ 24 октября 2011

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

(UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath

Чтобы получить нужную ячейку (следующую или предыдущую).

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

cell.selected = YES

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...