0

数日以来、サーバーからのxmlファイルから解析されたデータの配列からの2つの文字列を出力しようとしています(それは長い:Dでした)。問題は、2 つの文字列のうちの 1 つしか印刷できなかったことです。私は調査を行い、技術に関する指針を見つけましたが、誰かが私を助けてくれれば、その技術を機能させることができません. ここに私のコードがあります:

- (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

この方法でセルのラベルを動的に作成しようとするよりも、必要に応じて 2 つのラベルが既に配置されているカスタム テーブル ビュー セルを使用する方がよいでしょう。これらのラベルのテキストを直接設定できます。

コードを見て、MRC ではなく ARC に移行し、テーブル ビューのドキュメントを読むこともお勧めします。この場合、またはストーリーボードで正しく構成されたカスタム セルを使用している場合は、再利用キューから返された nil 値を確認する必要はありません。

于 2013-11-06T10:42:22.617 に答える