Я использую раскадровку с UITableView в UINavigationController. В этом UITableView используется пользовательский tableViewCell, имеющий внутренние свойства.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomTableViewCell *cell = nil;
if (SYSTEM_VERSION_LESS_THAN(@"6.0") ) {
//iOS 6.0 below
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
}
else {
//iOS 6.0 above
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; //work segue
}
Приведенный выше код хорошо работает с push segue. Но не тогда, когда я использовал
cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"]; //not work segue
Я использовал этот метод распределения для сохранения данных ячейки от повторного использования ячейки.
Это просто разница в методах alloc и deque.. . Что мне не хватает?
редактировать) Я знаю, что не использовать метод dequeReusableCell плохо по причине производительности. Но количество ячеек не будет большим. Вот почему мне не нужен метод deque.
«не работает» означает «не выполнять push-переход», а не сбой.
Он показывает ячейку так же, как при использовании метода dequeReusable, за исключением значка индикатора раскрытия справа от ячейки. Значок индикатора исходит из настроек раскадровки.
И когда я касаюсь ячейки, ячейка подсвечивается синим цветом, но переход на нажатие не выполняется.
CustomTableViewCell имеет 4 свойства. Это все отличается от UITableViewCell. Пользователи устанавливают свойства в DetailViewController (переход к этому). Ячейка не имеет IBOutlet ref. В MasterViewController (с tableView) метод cellForRowAtIndexPath возвращает код CustomTableViewCell выше.
Метод cellForRowAtIndexPath добавляет кнопку включения/выключения слева от индикатора в CustomTableViewCell и устанавливает номер тега для ячейки.
dequeueReusableCellWithIdentifier
всегда дает вам ячейку. - person Ric   schedule 23.02.2013