Почему я не могу получить доступ к свойствам своей пользовательской ячейки? - PullRequest
0 голосов
/ 23 октября 2019

Я создал пользовательскую ячейку для моего tableView, которая выглядит следующим образом:

enter image description here

В cellForRowAt Я загружаю cell вот так:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    var cell = UITableViewCell(style: .subtitle, reuseIdentifier: "ColleagueViewId")
    let nib: NSArray = Bundle.main.loadNibNamed("ColleagueViewCell", owner: self, options: nil)! as NSArray
    cell = nib[0] as! ColleagueViewCell

    //Doesn't work:
    cell.nameOfObj
    cell.imButton

    return cell

}

Но я не могу получить доступ к свойствам пользовательского cell. Если я запускаю приложение, я получаю пользовательский cell, но без данных (так как я еще не добавил его). Класс cell записан в objective c, а файл h находится в мосте. Как я уже сказал, я получаю cell, и он показан с правильным макетом. Так почему я не могу получить свойства? Дайте мне знать, если вы хотите, чтобы я показал дополнительный код или что-то еще.

РЕДАКТИРОВАТЬ Вот мой cell класс ColleagueViewCell:

#import <Foundation/Foundation.h>

@class InternalContact;

@interface ColleagueViewCell : UITableViewCell {
    IBOutlet UILabel *__weak nameCall;
    IBOutlet UILabel *__weak forwardCall;
    IBOutlet UIImageView *__weak iconImageView;
    IBOutlet UIButton *__weak imButton;

    InternalContact *contact;
}

@property(strong) InternalContact *contact;

@property (nonatomic, weak) UILabel *nameCall;
@property (nonatomic, weak) UILabel *forwardCall;
@property (nonatomic, weak) UIImageView *iconImageView;
@property (nonatomic, weak) UIButton *imButton;

@end

1 Ответ

1 голос
/ 23 октября 2019

Вместо загрузки ячейки с помощью loadNibName(_:owner:options:) необходимо удалить из очереди cell с помощью reuseIdentifier с использованием dequeueReusableCell(withIdentifier:for:).

Итак, замените приведенный ниже код,

var cell = UITableViewCell(style: .subtitle, reuseIdentifier: "ColleagueViewId")
let nib: NSArray = Bundle.main.loadNibNamed("ColleagueViewCell", owner: self, options: nil)! as NSArray
cell = nib[0] as! ColleagueViewCell

на

let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ColleagueViewCell

Перед этим вы должны зарегистрировать ColleagueViewCell с помощью tableView, используя

tableView.register(UINib(nibName: "ColleagueViewCell", bundle: nil), forCellWithReuseIdentifier: "cell")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...