我搜索得太多,尝试了很多,但我无法使其发挥作用。
我有一个视图控制器,在该控制器中我有一个具有自定义单元格的tableview。 我连接outlet,datasource和delegate但是当我运行项目时,而不是我的自定义单元格。显示UITableCell,也不显示数据。这是我的.h和.m文件
#import <UIKit/UIKit.h>
@class SelectMutantCell;
@interface MutantViewController : UIViewController <UITableViewDataSource,UITableViewDelegate>{
UITableView *tableView;
IBOutlet SelectMutantCell *mutantCell;
}
@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, weak) SelectMutantCell *mutantCell;
- (IBAction)cancel:(id)sender;
@end
这是我的.m文件
@implementation MutantViewController
@synthesize tableView = _tableView;
@synthesize mutantCell = _mutantCell;
NSArray *mutants;
- (void)viewDidLoad
{
[super viewDidLoad];
//mutants = [mutants initWithObjects:@"Keko",@"HEHE",@"PEPE", nil];
UINib *cellNib = [UINib nibWithNibName:@"SelectMutantCell" bundle:nil];
[self.tableView registerNib:cellNib forCellReuseIdentifier:@"SelectMutantCell"];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = @"SelectMutantCell";
SelectMutantCell *cell = (SelectMutantCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSLog(@"---");
cell.nameLabel.text = @"Hehe"];
cell.descriptionLabel.text = @"hhe";
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 3;
}
NSLog(@“---”)用于调试,运行时显示。问题在于
cell.nameLabel.text = @"Hehe"];
cell.descriptionLabel.text = @"hhe";
这个块,如果我写cell.textLabel.text =“test”它可以工作,但我需要我的自定义单元格显示。
任何帮助将不胜感激..
答案 0 :(得分:2)
插入if(cell == nil){}循环
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = @"SelectMutantCell";
SelectMutantCell *cell = (SelectMutantCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[SelectMutantCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
NSLog(@"---");
cell.nameLabel.text = @"Hehe"];
cell.descriptionLabel.text = @"hhe";
return cell;
}
答案 1 :(得分:0)
查看您的cellForRowAtIndexPath:
方法,您永远不会初始化单元格。尝试这样做:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = @"SelectMutantCell";
SelectMutantCell *cell = (SelectMutantCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"SelectMutantCell" owner:nil options:nil];
for(id currentObject in topLevelObjects) {
if([currentObject isKindOfClass:[SelectMutantCell class]]) {
cell = (SelectMutantCell *)currentObject;
break;
}
}
}
NSLog(@"---");
cell.nameLabel.text = @"Hehe"];
cell.descriptionLabel.text = @"hhe";
return cell;
}
答案 2 :(得分:0)
我有同样的问题。要解决它,请检查以下内容:
,您已删除默认创建的根视图,并从XCode对象浏览器拖动UITableViewCell,然后将UItableViewCell的自定义类型设置为您的子类SelectMutantCell
您已关联商店
您已将细胞标识符添加到SelectMutantCell,就像在故事板中一样
最后但并非最不重要的是,你没有在故事板TableView中添加相同的单元格,它将在故事板和来自[self.tableView registerNib:cellNib forCellReuseIdentifier:@“SelectMutantCell”]的单板之间进行混淆。