Как выбрать UITableViewCell по умолчанию? - PullRequest
17 голосов
/ 24 августа 2009

Я создал UITableView и хотел бы, чтобы определенный UITableViewCell отображался выделенным (синим) при загрузке представления.

Ответы [ 7 ]

41 голосов
/ 07 октября 2009
-(void)viewWillAppear:(BOOL)animated {
    // assuming you had the table view wired to IBOutlet myTableView
    // and that you wanted to select the first item in the first section
    [myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 
                             animated:NO 
                       scrollPosition:UITableViewScrollPositionTop];
}

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

6 голосов
/ 24 августа 2009

Будьте осторожны, используя этот метод, так как выбор строки таким способом - это то, что Apple предлагает против , чтобы показать "выбранное" состояние.

Вместо этого рассмотрите возможность установки для свойства accessoryType ячейки чего-то вроде UITableViewCellAccessoryCheckmark.

3 голосов
/ 18 мая 2012

Вы должны положить его в viewWillAppear.

[myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 
                         animated:NO 
                   scrollPosition:0];

Если вы попытаетесь выбрать его в cellForRowAtIndexPath:, он не будет использовать нужный стиль.

1 голос
/ 25 ноября 2016

Используйте этот код для выбора ячейки по умолчанию в табличном представлении, indexPath может варьироваться в зависимости от ваших потребностей

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSIndexPath *indexPath=[NSIndexPath indexPathForRow:0 inSection:0];
    [theTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionBottom];
}
1 голос
/ 24 августа 2009

Определенно следите. Я уверен, что у вас есть веская причина, но посмотрите внимательно на документ «Руководство по взаимодействию с человеком», который предоставляет Apple. Приложения отклоняются из-за не отмены выбора строк таблицы. Я бы посоветовал вам найти соответствующий раздел HIG и посмотреть, что Apple предложит любые предложения.

0 голосов
/ 27 марта 2014

Иногда, когда вы не в UIViewController, у вас нет viewWillAppear, а иногда вы создали UITableView программно.

Простым решением является реализация этого delegate метода:

- (void)tableView:(UITableView *)tableView 
        willDisplayCell:(UITableViewCell *)cell 
        forRowAtIndexPath:(NSIndexPath *)indexPath {

    if (self.selectedIndex == indexPath.row) {
        cell.selected = YES;
    }
}

Это не работает в cellForRowAtIndexPath, потому что ячейка еще не отображается. и метод setSelected вызывается именно тогда, когда отображается этот метод.

0 голосов
/ 24 августа 2009

Используйте метод UITableViewCell

- (void)setSelected:(BOOL)selected animated:(BOOL)animated

Информация здесь .

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