0

Я использую TableView с TableViewCell. Я программно добавил ImageView, Text и uibutton к ячейке. Рамка кнопки установлена ​​для портретной и альбомной ориентации. Но когда устройство повернуто от портрета к пейзажу, отображаются две кнопки вместо одной.Два uibutton, показанные в TableView Cell, когда устройство повернуто

Я попытался удалить кнопку, когда в режиме ландшафтного режима ее не работает.

switch ([indexPath section]) 
{ 

    case 0: 
    { 
     cell.imageView.image = [UIImage imageNamed:@"active.png"]; 
     cell.textLabel.text = @"Application Name"; 
     self.uninstallApplicationButton = [[UIButton alloc] init]; 
     self.uninstallApplicationButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [self.uninstallApplicationButton setTitle:@"Install" forState: UIControlStateNormal]; 
     [self.uninstallApplicationButton setBackgroundColor:[UIColor brownColor]]; 

     UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 

     if (device == UIUserInterfaceIdiomPhone) 
     { 
      if (UIInterfaceOrientationIsLandscape(orientation)) 
      { 
       self.uninstallApplicationButton.frame = CGRectMake(490.0, 25.0, 65.0, 30.0); 
      } 
      else if(UIInterfaceOrientationIsPortrait(orientation)) 
      { 
       self.uninstallApplicationButton.frame = CGRectMake(250.0, 25.0, 65.0, 30.0); 

      } 
     } 

     else if(device == UIUserInterfaceIdiomPad) 
     { 
      self.uninstallApplicationButton.frame = CGRectMake(600.0, 25.0, 150.0, 30.0); 
     } 

    } 
    [cell.contentView addSubview:uninstallApplicationButton]; 
     break; 
+1

Пожалуйста, укажите соответствующий код. – Caleb

+0

@Caleb Я добавил код. – Amon

+1

Где вы пишете этот код? Возможно, он запускается более одного раза. – Desdenova

ответ

0

Перед вызовом init вы должны удалить кнопку из своего супервизора.

+0

не работает. он удаляет кнопку, но не добавляет ее снова для просмотра. – Amon

+0

удалите эту строку из вашего кода: self.uninstallApplicationButton = [[UIButton alloc] init]; – KKRocks

+0

также ссылается на эту ссылку для процесса добавления кнопки в ячейке tableview: http://stackoverflow.com/questions/7721364/add-buttons-programatically-to-table-view-cells?answertab=votes#tab-top – KKRocks

1

Вы сказали, что код находится в вашем методе -cellForRow(at:). Поскольку представления таблиц повторно используют их ячейки, ваш код должен учитывать, что конфигурация ячейки, которую она настраивает, уже была настроена ранее. Хороший подход заключается в том, чтобы не добавлять в свои ячейки какие-либо кнопки или другие представления, а просто добавлять их в раскадровку. Если вы должны добавить представления в свои ячейки, вы должны либо удалить все, которые были добавлены ранее, либо просто повторно использовать их, не добавляя их снова.

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