Как я могу проверить, зарегистрирован ли идентификатор повторного использования в UITableView? - PullRequest
8 голосов
/ 22 марта 2012

В приложениях для iOS нам необходимо зарегистрировать nib-файлы в нашем табличном представлении, прежде чем мы сможем использовать UITableView#dequeueReusableCellWithIdentifier.

Пример:

static NSString *myReuseIdentifier = @"MyReuseIdentifier";
UINib *cellNib = [UINib nibWithNibName:myReuseIdentifier bundle:nil];
[self.tableView registerNib:cellNib forCellReuseIdentifier:myReuseIdentifier];

Есть ли способ проверить, был ли Nib уже зарегистрирован в UITableView?

У меня есть пользовательская ячейка, которую я использую в разных таблицах на нескольких контроллерах в моем приложении. Я хотел бы переместить часть кода в макрос. Что-то вроде

-(CustomCell *)customCell:(UITableView *)tableView
{
    static NSString *reuseIdentifier = @"MyReuseIdentifier";
    if (![table hasAlreadyRegisteredNib:reuseIdentifier]){
       UINib *cellNib = [UINib nibWithNibName:reuseIdentifier bundle:nil];
       [self.tableView registerNib:cellNib forCellReuseIdentifier:reuseIdentifier];     
    }
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
    return cell;
}

Ответы [ 2 ]

5 голосов
/ 23 марта 2012

Я не уверен, что это то, что вы намерены, но

-dequeueReusableCellWithIdentifier:

возвращает nil, если ячейка не готова к повторному использованию. В противном случае он возвращает ячейку, поэтому вы можете просто попробовать.

0 голосов
/ 14 августа 2012

Я считаю, что смысл registerNib:forCellReuseIdentifier: состоит в том, чтобы уменьшить стандартный код. Не могли бы вы просто вызвать это один раз в вашем viewDidLoad методе?

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