Моя пользовательская ячейка таблицы UITableViewCell отображается в виде пустого списка элементов
В основном у меня есть пользовательский UITableViewCell, который я сделал в своем файле nib. Внутри этого у меня есть несколько ярлыков и все такое, что я хочу иметь возможность редактировать программно. Я назвал свой файл пера "post", и я сделал его владельца файла" post", и я установил его класс В" post " под владельцем файла, а также. Я связал все свои метки внутри моего пера с этим классом:
Пост.h:
#import <Foundation/Foundation.h>
@interface post : UITableViewCell
@property (nonatomic, weak) IBOutlet UILabel *title;
@property (nonatomic, weak) IBOutlet UILabel *authorComments;
@property (nonatomic, weak) IBOutlet UILabel *time;
@end
Пост.М:
#import "post.h"
@implementation post
@synthesize title = _title;
@synthesize authorComments = _authorComments;
@synthesize time = _time;
@end
Изображение файла моего пера:
Итак, теперь все в моем файле пера связано с моим классом post , за исключением для самой ячейки, потому что мне сказали, что я должен связать это с "видом", но я не уверен, как (я пытался связать его с backgroundView, но это не исправило мою проблему). Я также пытался дать фактическому объекту cell сообщение класса, но это не решает мою проблему.
Тогда в моем контроллере у меня есть следующий код:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// this is the identifier that I gave the table cell within my nib
static NSString *simpleTableIdentifier = @"post";
// grabs me a cell to use
post *cell = (post *) [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[post alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
// sets the text on one of the labels within my cell to something else
cell.title.text = @"this is a test";
// returns my customized cell
return cell;
}
Однако, когда я запускаю свое приложение, я просто получаю это:
Я знаю, что проблема, с которой я столкнулся, имеет чтобы сделать с моей пользовательской ячейкой, потому что она работала раньше, когда я устанавливал владельца файла на моем пере на мой контроллер, вместо того, чтобы пытаться сделать то, что я делаю сейчас, который пытается сделать подкласс UITableViewCell. Все, что я хочу сделать, это иметь возможность создать пользовательскую ячейку с несколькими различными метками на ней, а затем иметь возможность редактировать текст в ячейке программно.
Если это поможет, вот все мои исходные файлы и мое перо файл:
3 ответа:
Вы должны сделать две вещи
В файле xib
Отключите все розетки владельца файла и подключите розетки к объекту пользовательской ячейки
В коде
Загрузите ячейку из nib
if (cell == nil) { //cell = [[post alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; cell = [[[NSBundle mainBundle]loadNibNamed:@"post" owner:self options:nil]objectAtIndex:0]; }
Вы должны registerNib: forCellReuseIdentifier: в вашем UITableView, что-то вроде этого:
- (void)viewDidLoad { [super viewDidLoad]; [self.tableView registerNib:[UINib nibWithNibName:@"post" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"post"]; }
Свифт:
override func viewDidLoad() { super.viewDidLoad() tableView.registerNib(UINib(nibName: "post", bundle: NSBundle.mainBundle()), forCellReuseIdentifier: "post") }