0

2 つのタグ付きラベルを含む UITableViewCell を読み込んでいます。ユーザーは、次のコードを含む現在のビューを離れ、別のビューに移動します。そこで名前の値が設定され、ユーザーはこのビューに戻ります (以下のコード)。他のビューで設定した名前を名前ラベルに割り当てます。それは機能しますが、新しいラベルが他のラベルの上にずれて表示されます。このセルの 2 つのバージョンを保持しているようです。よくわかりません。そのような動作を引き起こしている可能性のあるものについて何か提案はありますか?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = nil;
if(indexPath.section == 0)
{   
    cell = [tableView dequeueReusableCellWithIdentifier:@"CellNameIdentifier"];
    if (cell == nil) {
        [[NSBundle mainBundle] loadNibNamed:@"CellentName" owner:self options:nil];
        cell = cellName;
        //self.cellName = nil;
    }
}
return cell;
}
- (void)viewDidAppear:(BOOL)animated {
UILabel *startdate = (UILabel *)[cellName viewWithTag:1];
startdate.text = aName;
[super viewDidAppear:animated];
}
4

1 に答える 1

1

このコードの外観から、「新しいラベルが他のラベルの上にずれている」という可能性は低く、図面が物事の上に適切に再描画されていないようです。これを機能させるには、[tableView reloadData] を呼び出したり、オブザーバーを使用したりすることができますが、もっと良い方法があると思います。

オブジェクトを他のビューに渡し、(ラベルではなく) オブジェクトを変更し、そのようにデータを移動できるはずです。つまり、テーブル ビューでは、オブジェクトをロードし、cellForRowAtIndexPath 内でセルをロードし、オブジェクト データを使用してラベル名を設定します。2 番目のビューをプッシュし、オブジェクトをプロパティとして渡します。このプロパティをその画面で必要に応じて操作します。ビューをポップするとき、特別なロジックはありません。最初のテーブル ビューには、操作していたオブジェクト内に保存されているものがすべて表示されます。

于 2009-02-27T17:09:18.387 に答える