1

スクロールラベルが重なった後

テーブルビューをスクロールする前に

tableview にカスタム ラベルを追加しました。しかし、スクロールすると、指定された画像のように見えます。

私もコードを追加しています。`- (void)prepareForSegue:(UIStoryboardSegue *)segue 送信者:(id)送信者 {

if ([segue.identifier isEqualToString:@"DetailPlacePage"]) {
    NSIndexPath *indexPath = [self.placeTableViewController indexPathForSelectedRow];
    NomadPlaceDetailViewController *placedetailcontroller = segue.destinationViewController;
    placedetailcontroller.myDictionary = [self.placeArray objectAtIndex:indexPath.row];
}

} `

4

3 に答える 3

0

dequeueReusableCellWithIdentifier: を使用している場合、セルにサブビューを追加する場合も、そのサブビューを再利用することをお勧めします。

次のように cellForRowAtIndexPath を記述できます。

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

    static NSString *CellIdentifier = @"CellIdentifier";

    UITableViewCell *cell = (UITableViewCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    UITextField *myView;

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

        myView = [[UITextField alloc] init];  // Set frame as required
        myView.tag = indexPath.row;
        [cell.contentView addSubview:myView];
    }

    myView = [cell.contentView viewWithTag:indexPath.row];
    myView.text = @"YourText";
   return cell;

}

ここで起こることはmyView、セルが の場合に一度だけnil追加され、その後、以前に追加myViewされたテキストを再利用するため、myView複数回追加されず、問題が解決することです。

于 2013-11-07T09:32:00.963 に答える
-1

これは、if(cell == nil)条件外でラベルを初期化して追加するためです。したがって、テーブル ビューをスクロールするたびに、ラベルを追加するコードが実行され、新しいラベルが作成されます。したがって、それらをif(cell == nil)条件の中に配置してください。データ表示部のみ外側に配置してif(cell == nil)ください。

于 2013-11-07T05:26:00.143 に答える