0

几天以来,我试图打印来自数据数组的两个字符串,这些字符串是从来自我的服务器的 xml 文件中解析的(很长:D)。问题是我只设法打印了两个字符串之一。我进行了研究并找到了有关技术的指针,但是如果有人可以帮助我,我将无法使该技术发挥作用。这是我的代码:

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

static NSString *MyIdentifier = @"MyIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
}
for(UIView *eachView in [cell subviews]){
    [eachView removeFromSuperview];
}

UILabel *lbl1 = [[UILabel alloc]initWithFrame:CGRectZero];
[lbl1 setFont:[UIFont fontWithName:@"Helvetica" size:12.0]];
[lbl1 setTextColor:[UIColor grayColor]];
int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];
lbl1.text = [[stories objectAtIndex: storyIndex] objectForKey: @"creation_date"];
NSLog(lbl1.text);
[cell addSubview:lbl1];
[lbl1 release];

UILabel *lbl2 = [[UILabel alloc]initWithFrame:CGRectZero];
[lbl2 setFont:[UIFont fontWithName:@"Helvetica" size:12.0]];
[lbl2 setTextColor:[UIColor blackColor]];
lbl2.text = [[stories objectAtIndex: storyIndex] objectForKey: @"name"];
NSLog(lbl2.text);
[cell addSubview:lbl2];
[lbl2 release];

//Used to do this ---> int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];
//[cell.textLabel setText:[[stories objectAtIndex: storyIndex] objectForKey: @"creation_date"]];
return cell;

}

4

2 回答 2

1

我看到的问题是您将子视图直接添加到单元格中。您应该像这样将它添加到 cell.contentview 中:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

    CGRect frame = CGRectMake(0, 0, 160, 50);
    UILabel *label = [[UILabel alloc] initWithFrame:frame];
    label.textAlignment = UITextAlignmentRight;
    [cell.contentView addSubview:label];
    [label release];
}

// Get a reference to the label here

label.text = @"9:00am";

return cell;
}

我也强烈建议为 UITableViewCell 创建子类。

于 2013-11-06T10:39:44.247 回答
0

与其尝试以这种方式为单元格动态创建标签,不如只使用自定义表格视图单元格,该单元格已经根据需要放置了两个标签。然后,您可以直接为这些标签设置文本。

查看您的代码,我还建议您使用 ARC 而不是 MRC,并阅读表格视图的文档;在这种情况下,您不需要检查从重用队列返回的 nil 值,或者您是否在情节提要上使用正确配置的自定义单元格。

于 2013-11-06T10:42:22.617 回答