2016-04-26 3 views
0

Я реализовал TableView с ADLively TableView.TableViewCell складывается и появляется снова и снова

Но если я перечисляю Tableview, тексты клетки становятся быть сложено снова и снова ....

Использование «cell.textLabel» хорошо, добавляя UILabel не хорошо, чем это, но если я использую " cell.textLabel ", я не могу изменять ширину textLabel.

(Я хочу добавить UIImageView на левой и правой стороне текста)

Так что теперь, я использую способ добавить UILabel.

Что мне делать?

Вот код.

- (void)viewDidLoad { 
CGRect rect = CGRectMake(0, 50, 320, self.view.frame.size.height-150); 

    self.tableView = [[ADLivelyTableView alloc]initWithFrame:rect style:UITableViewStylePlain]; 
    self.tableView = (ADLivelyTableView *)self.tableView; 
    self.tableView.initialCellTransformBlock = ADLivelyTransformFan; 

    self.tableView.delegate = self; 
    self.tableView.dataSource = self; 
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
    [self.view addSubview: self.tableView]; 
    //self.tableView.backgroundColor = [UIColor blueColor]; 
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"]; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [self.section count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 
    [self updateCell:cell atIndexPath:indexPath]; 

    if (cell == nil){ 
     myCellView = [[UITableViewCell alloc] 
         initWithStyle:UITableViewCellStyleDefault 
         reuseIdentifier:@"Cell"]; 

     NSMutableArray *set = [self.section objectAtIndex:indexPath.row]; 

     tableTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 7, 220, 30)]; 
     tableTitleLabel.text = [set objectAtIndex:0]; 
     [tableTitleLabel setNumberOfLines:0]; 
     tableTitleLabel.backgroundColor = [UIColor clearColor]; 
     tableTitleLabel.textColor = [UIColor blackColor]; 
     tableTitleLabel.font = [UIFont fontWithName:@"HiraKakuProN-W3" size:15]; 
     tableTitleLabel.adjustsFontSizeToFitWidth = YES; 
     tableTitleLabel.minimumScaleFactor = 10.0f; 
     [myCellView.contentView addSubview:tableTitleLabel]; 

     } 

    NSMutableArray *set = [self.section objectAtIndex:indexPath.row]; 
    [(UILabel *)[cell.contentView viewWithTag:1] setText:[set objectAtIndex:0]]; 

     return cell; 
} 

- (void)updateCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath 
{ 


NSMutableArray *set = [self.section objectAtIndex:indexPath.row]; 

      tableTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 7, 220, 30)]; 
      tableTitleLabel.text = [set objectAtIndex:0]; 
      [tableTitleLabel setNumberOfLines:0]; 
      tableTitleLabel.backgroundColor = [UIColor clearColor]; 
      tableTitleLabel.textColor = [UIColor blackColor]; 
      tableTitleLabel.font = [UIFont fontWithName:@"HiraKakuProN-W3" size:15]; 
      tableTitleLabel.adjustsFontSizeToFitWidth = YES; 
      tableTitleLabel.minimumScaleFactor = 10.0f; 
      [cell.contentView addSubview:tableTitleLabel]; 
} 
+2

Не добавляйте subview в ячейки. Они используются повторно ... Используйте пользовательский UITableViewCell. – Larme

ответ

1

Это не очень хорошая идея, чтобы добавлять подвиды в ячейке прокрутки, но если вы не хотите, чтобы изменить код, который вы уже написали, используйте следующее, чтобы удалить все подвиды этой ячейки, прежде чем звонить вы updateCell способ.

for (UIView *view in [cell subviews]) 
{ 
    [view removeFromSuperview]; 
} 
+0

Благодарим за ответ. Если я добавлю ваш код, ярлык не покажет ... – bao

+0

Если этот ответ правильный, пожалуйста, примите его. благодаря –

Смежные вопросы