У меня может быть несколько ответов на мой вопрос:
1 - Как уже упоминал Дрю, клеточные остатки типа ID. Я подумал, что, если функции приведут к типу ячейки, она будет определенным типом, но это не так.
2 - Решением было бы иметь 3 больших оператора if для каждого типа ячеек. Каждый оператор if, заканчивающийся
возвратная ячейка;
вызов.
3 - Решение, которое я собираюсь попробовать сейчас, состоит в том, чтобы иметь только один подкласс ячейки вместо 3 и иметь метод в моем подклассе ячейки под названием
- (Недействительными) setCellBehaviour: (интермедиат) definedNumber
Таким образом, я могу скрывать слои / метки и т. Д. И настраивать их по своему желанию.
обновление
Я достиг требуемых результатов, как это:
У меня есть только один подкласс ячейки, который имеет один NIB со многими различными UIlabels.
Я вызываю это в cellForRowAtIndexPath: метод моего контроллера uiview, когда ячейка была выделена / init.
//Set the behaviour
[cell setCellBehaviour:KCellBehaviourName];
Это относится к определениям, которые я установил в заголовочном файле контроллера представления:
//Definitions for cell type behaviour. Passed to cell during creation.
(HASH) определяет KCellBehaviourStandard 0
(HASH) определить KCellBehaviourName 1
(HASH) определить KCellBehaviourAddress 2
(HASH) определить KCellBehaviourPool 3
(похоже, в этом посте не может быть хэшей)
Тогда у моего UITableViewCellSubclass есть этот метод, который мы вызывали ранее:
-(void)setCellBehaviour:(NSUInteger)definedBehaviour {
switch (definedBehaviour) {
case KCellBehaviourStandard:
self.label.hidden = NO;
self.value.hidden = NO;
self.length.hidden = YES;
self.poolType.hidden = YES;
break;
case KCellBehaviourName:
self.label.hidden = NO;
self.value.hidden = NO;
self.length.hidden = YES;
self.poolType.hidden = NO;
break;
case KCellBehaviourAddress:
self.label.hidden = NO;
self.value.hidden = NO;
self.length.hidden = YES;
self.poolType.hidden = YES;
break;
case KCellBehaviourPool:
self.label.hidden = NO;
self.value.hidden = NO;
self.length.hidden = NO;
self.poolType.hidden = YES;
default:
break;
}
}