Загрузка данных в UITableViewCell с пользовательским Xib

#ios #ios4 #uitableview #properties

#iOS #ios4 #uitableview #свойства

Вопрос:

Я создал пользовательскую ячейку с помощью IB

В моем интерфейсе у меня есть 3 UILabels и UIImageView.

Я подключил все розетки, а затем снова подключил свой контроллер, у меня есть следующий код

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    static NSString* MyIndenifier = @"MyCell";
PersonCell* cell = (PersonCell*)[tableView dequeueReusableCellWithIdentifier:MyIndenifier];
if (cell == nil) {
    NSArray* nib = [[NSBundle mainBundle] loadNibNamed:@"PersonCell" owner:self options:nil];
    cell = (PersonCell *)[nib objectAtIndex:0];
    cell.nameLabel.text = [[mutablePeopleArray objectAtIndex:indexPath.row] getContactName];
}

return cell;
  

В моей личной ячейке.h У меня есть следующее в файле .h

 #import <UIKit/UIKit.h>


@interface PersonCell : UITableViewCell {
IBOutlet    UILabel*        nameLabel;
IBOutlet    UIImageView*    thumbnailImage;
IBOutlet    UILabel*        addressLabelStreet;
IBOutlet    UILabel*        addressLabelCityAndStateWithZip;
}

- (void)setNameLabel:(NSString *)paramNameText;
- (void)setThumbnailImage:(UIImage *)paramImage;
- (void)setAddressLabel:(NSString *)paramAddress;

@property (nonatomic, retain) UILabel* nameLabel;
@property (nonatomic, retain) UILabel* addressLabelStreet;
@property (nonatomic, retain) UILabel* addressLabelCityAndStateWithZip;
@property (nonatomic, retain) UIImageView* thumbnailImage;

@end
  

}

Я получаю следующие ошибки

PersonCell.h: 28: ошибка: тип аргумента setter ‘-thumbnailImage’ не соответствует типу свойства PersonCell.h: 28: ошибка: тип аргумента setter ‘-nameLabel’ не соответствует типу свойства PersonCell.h: 28: ошибка: тип аргумента setter ‘-addressLabelStreet’ не соответствует типу свойства PersonCell.h: 28: ошибка: тип аргумента setter ‘-addressLabelCityAndStateWithZip’ не соответствует типу свойства

Ответ №1:

Похоже, вы определили параметры, поэтому вы не можете использовать свойства / синтезировать.

Если вы делаете что-то пользовательское с установщиками, создайте новое имя метода, например

  • (недействительно) MyCustomNameForHandlingAddresses

Ответ №2:

Вы уже использовали свойство для getter и setter, так зачем использовать метод пользовательского набора, просто используйте: nameLabel.text=@»Некоторый текст» в реализации, где вам нужно.