为什么我的原型细胞显示空白?

时间:2012-05-28 03:51:12

标签: objective-c ios xcode uistoryboard

在我的故事板中的uitableview中,我定义了一个原型单元格。在那个单元格(自定义类kzTexturedCellv2)中,我有一个文本视图和一个图像视图。我还给了单元格一个标识符(“kzTexturedCellv2”)并使用了

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

kzTexturedCellv2 *cell = [[kzTexturedCellv2 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"kzTexturedCellv2"];

...

创建单元格。问题是单元格显示为空白(没有我在storyboad中添加的任何子视图。)当我尝试在单元格内设置uitextview的文本时,它总是返回null。这是怎么回事?

2 个答案:

答案 0 :(得分:6)

使用故事板时,无需为该单元分配init。

请参阅dequeueReusableCellWithIdentifier behavior changed for prototype cells?

仅限使用:

kzTexturedCellv2 *cell = [tableView dequeueReusableCellWithIdentifier:@"kzTexturedCellv2"];

Alloc init将由框架

处理

答案 1 :(得分:0)

你能看到以下代码吗?我希望它会对你有所帮助

- (void)viewDidLoad{
[super viewDidLoad];

// Create your image
UIImage *image = [UIImage imageNamed: @"person_menu.png"];
UIBarButtonItem *barButton = [[UIBarButtonItem alloc]
                              initWithImage:image
                              style:UIBarButtonItemStylePlain
                              target:nil
                              action:nil];
// set the text view to the image view
self.navigationItem.leftBarButtonItem = barButton;

menuItems = @[@"title", @"Payment", @"History",@"BookNow",@"Help", @"Promotions",@"Notifications", @"Settings", @"logOut"];
}
#pragma mark
#pragma mark - UITableViewDelegate Methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
// Return the number of sections.
return 1;
}

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
// Return the number of rows in the section.
return [menuItems count];
}
 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row == 0) {
    return 140;
}else{
     return  75;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *CellIdentifier = [menuItems objectAtIndex:indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.highlighted = YES;
return cell;
}

您在UITableviewCell中拥有的标识符可以收集这些标识符并将其添加到一个NSArray中

对于你的情况,你可以像这样使用::

kzTexturedCellv2 *cell = [tableView dequeueReusableCellWithIdentifier:@"kzTexturedCellv2"];