вызовите didSelectRowAtIndexPath при нажатии кнопки из DetailView на iPad - PullRequest
0 голосов
/ 12 января 2012

Я делаю приложение для iPad SplitView, в котором у меня есть таблица MasterView слева (в горизонтальной ориентации) и DetailView справа (пока что ничего нового ...).Когда я нажимаю на ячейку таблицы, detailView показывает детали ячейки.У меня также есть кнопка на detialView для перехода к следующей ячейке и кнопка для перехода к предыдущей ячейке.

Моя проблема в том, что я хотел бы изменить выбор ячеек в табличном представлении слева каждый раз, когда я нажимаю кнопку, чтобы пользователь знал, в какой ячейке он находится в данный момент.

Iпопытался вызвать tableView: didSelectRowAtIndexPath: метод, но я не могу установить право NSIndexPath (я хочу отправить целое число, чтобы указать номер следующей ячейки).

Вот код, который trzing квызовите метод selectRowAtIndexPath:

iPadHelloWorldAppDelegate - это AppDelegate.masterViewController - это главный контроллер с таблицей на нем.

// method to set the image for the previous letter
-(IBAction)previousLetter{
    iPadHelloWorldAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    NSLog(@"IndexOfImage equals: %@", appDelegate.indexOfImage);

    int number = [[appDelegate.indexOfImage substringFromIndex:5] intValue];

    NSString *imageName = [NSString stringWithFormat:@"image%@.png",[NSString stringWithFormat:@"%d", number-1]];
    [self.letterImageView setImage:[UIImage imageNamed:imageName]];
    NSLog(@"Image name: %@", imageName);

    appDelegate.indexOfImage = [imageName substringToIndex:6];       

    NSIndexPath *currentPath = appDelegate.currentPath;
    NSIndexPath *nextPath = [NSIndexPath indexPathForRow:currentPath.row-1 inSection:currentPath.section];

    [masterViewController.tableView selectRowAtIndexPath:nextPath animated:YES scrollPosition:UITableViewScrollPositionNone];    

    NSLog(@"currentPath: %@", currentPath);    
    appDelegate.currentPath = nextPath;        
    NSLog(@"nextPath: %@", nextPath);    

Пожалуйста, помогите ...

Ответы [ 2 ]

1 голос
/ 12 января 2012

Я думаю, это может сработать.Для кнопки «Вперед» используйте этот код

NSIndexPath *currentPath = [tableView indexPathForSelectedRow];
NSIndexPath *nextPath = [NSIndexPath indexPathForRow:currentPath.row+1 inSection:currentPath.section];
[tableView selectRowAtIndexPath:nextPath animated:YES scrollPosition:UITableViewScrollPositionMiddle];

Для кнопки «Назад» замените -1 на + 1.

См. NSIndexPath UIKit Дополнительная документация для indexPathForRow: inSection:. * Способ 1008 *

0 голосов
/ 12 января 2012

"tableView: didSelectRowAtIndexPath:" является методом делегата; Вы не должны называть это напрямую. Вместо этого попробуйте вызвать "selectRowAtIndexPath: animated: scrollPosition:"

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