1

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

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

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

...

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

4

2 回答 2

6

使用情节提要时,无需分配初始化单元格。

看到原型单元格的 dequeueReusableCellWithIdentifier 行为改变了吗?

仅使用:

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

Alloc init 将由框架处理

于 2012-05-28T04:43:55.617 回答
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"];
于 2016-01-06T06:26:08.190 回答