Могу ли я использовать свойства для определения класса объекта? - PullRequest
0 голосов
/ 19 января 2012

У меня есть пользовательский UITableViewCell, созданный в IB.enter image description here

Все мои ячейки будут иметь эту общую схему.Однако в некоторых ячейках два белых вида будут классом А, а в других ячейках два белых вида будут классом В.(Оба подкласса UIView).Я попытался назначить определенный подкласс двух представлений, используя свойства.

Я установил два представления как свойства ячейки

@property (nonatomic, retain) IBOutlet UIView *leftView;
@property (nonatomic, retain) IBOutlet UIView *rightView; 

И в моем контроллере представления, где я делаю представление таблицыЯ попытался создать объект типа subclassA и назначить его как leftView, так что leftView будет иметь тип subclassA.В других ячейках я бы создал объект подкласса B и установил бы его на вид слева, так что в этих ячейках вид слева был бы подкласса b.

//equationTextField is a subclass of UIView
EquationTextField *textField = [[EquationTextField alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; // arbitrary frame
cell.leftView = textField;

Однако этот код не работает.Есть ли лучший способ назначить определенный класс моих представлений?

Ответы [ 2 ]

0 голосов
/ 19 января 2012

При необходимости вы можете проверить, является ли cell.leftView вашим EquationTextField:

if([cell.leftView isKindOfClass:[EquationTextField class]]) {
    NSLog(@"View is EquationTextField");
}
else {
    NSLog(@"View is not EquationTextField");
}
0 голосов
/ 19 января 2012

То, что вы делаете, хорошо, но вы можете захотеть исследовать наличие двух разных типов ячеек (с уже встроенными вашими пользовательскими представлениями) для повышения производительности - у каждого может быть свой идентификатор повторного использования, который вы выберете в зависимости от пути индекса.Создание представлений каждый раз в cellForRowAtIndexPath никогда не является хорошей идеей.

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

...