Използвам сценарий с 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.. какво ми липсва
edit) Знам, че неизползването на метода dequeReusableCell е лошо поради причината за производителността. Но броят на клетките няма да е много. Ето защо не се нуждая от метода deque.
"не работи" означава "не изпълнявайте push segue", а не срив.
Показва клетката по същия начин, както при използването на метода dequeReusable, с изключение на иконата на индикатора за разкриване вдясно на клетката. Иконата на индикатора идва от настройката на сценария.
И когато докосна клетката, клетката се осветява в синьо, но натискането не се изпълнява.
CustomTableViewCell има 4 свойства. Всичко това е различно от UITableViewCell. Потребителите задават свойствата в DetailViewController (push segue води до това). Клетката няма IBOutlet ref. В MasterViewController (имащ tableView), методът cellForRowAtIndexPath връща CustomTableViewCell по-горе код.
Методът cellForRowAtIndexPath добавя бутон за включване/изключване отляво на индикатора на CustomTableViewCell и задава номер на етикет за клетката.
dequeueReusableCellWithIdentifier
винаги ще ви даде клетка. - person Ric   schedule 23.02.2013