Выбор ячейки UITable в SplitViewController - PullRequest
0 голосов
/ 30 октября 2010

У меня есть UISplitViewController с табличным представлением для навигации.Это похоже на приложение Почта.Когда вы нажимаете на табличное представление в портретном режиме, всплывающее окно скрывается.Если щелкнуть панель навигации, чтобы вернуть всплывающее окно, выбранный элемент больше не отображается как выбранный.Как сделать этот элемент выбранным без повторного выбора элемента?(как в почтовом приложении)

Ответы [ 4 ]

2 голосов
/ 21 апреля 2011

В вашем методе viewDidLoad вы вызываете

self.clearsSelectionOnViewWillAppear = NO;?

Вот как это делает шаблон SplitView в Xcode.

0 голосов
/ 01 ноября 2010

У меня есть решение, которое работает, но оно неприятно хакерское.Я должен вызвать selectRowAtIndexPath дважды.Кажется, что cellForRowAtIndexPath делает недействительным выбор, сделанный в viewWillAppear.Однако его по-прежнему необходимо вызывать в viewDidAppear, поэтому представление прокручивается в правильную позицию до вызова cellForRowAtIndexPath.

- (void)viewWillDisappear:(BOOL)animated
{
    NSIndexPath *selected = [self.tableView indexPathForSelectedRow];
    _selectedRow = selected.row;
}

- (void)viewDidAppear:(BOOL)animated
{
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_selectedRow inSection:0];
    [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionMiddle];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //initialize cell code here...

    if (indexPath.row == _selectedRow) {
        [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionMiddle];
    }   
}
0 голосов
/ 01 ноября 2010

Для вашего контроллера табличного представления вызывается -viewWillAppear: перед отображением всплывающего окна? Если это так, вы можете написать это так:

- (void)viewWillAppear:(BOOL)animated
{
    [self.tableView selectRowAtIndexPath:<indexPath>
                                animated:animated
                          scrollPosition:UITableViewScrollPositionMiddle];

    [super viewWillAppear:animated];
}

Очевидно, замените <indexPath> на правильный путь индекса и установите положение прокрутки, как вы хотите. Вы также можете передать NO вместо animated, чтобы оно выглядело так, как оно было выбрано до появления представления.

0 голосов
/ 30 октября 2010

Есть ли у вас какие-либо изменения

[tableView deselectRowAtIndexPath:indexPath animated:YES];

в вашем didSelectRowAtIndexPath в RootViewController?

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