2014-11-07 2 views
4

enter image description hereКнопка удаления покрыта специальной ячейкой

У меня проблема в одном из моих проектов. У меня есть один вид на столе, как на картинке. Моя проблема заключается в том, что мой пользовательский фон ячейки перекрывает кнопку удаления UITableView. Может кто-нибудь, пожалуйста, помогите мне привести его на передний план.

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

    - (void)layoutSubviews 
    { 
        [super layoutSubviews]; 
    
        for (UIView *subview in self.subviews) { 
         for (UIView *subview2 in subview.subviews) { 
          //NSLog(@"confirm is %@",[subview2 class]); 
          if ([NSStringFromClass([subview2 class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"]) 
          { 
           // move delete confirmation view 
           [subview bringSubviewToFront:subview2]; 
          } else if ([NSStringFromClass([subview2 class]) isEqualToString:@"_UITableViewCellActionButton"]) 
          { 
           [subview bringSubviewToFront:subview2]; 
          } 
         } 
        } 
    } 
    
  2. другой вопрос ниже код работает только ДО прошивкой 7, но не работает в iOS 8.

  3. Если у меня установлен метод - (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath;, то у меня нет проблем, но мы не хотим отступа.

Любые идеи могут быть очень полезными.

+0

Может быть, вы добавили свои подвидов непосредственно в камеру, вместо того, чтобы это мнение содержания – Levi

+0

я добавил к ContentView только и еще одна вещи, этот код работает в прошивке 7, но не в прошивке 8. Код есть, если ([NSStringFromClass ([subview2 class]) isEqualToString: @ "UITableViewCellDeleteConfirmationView"]) { // перемещение подтверждения подтверждения удаления [subview bringSubviewToFront: subview2]; } – Tendulkar

+0

Вы можете добавить все uicomponents в один вид, а затем добавить представление в contentview во время редактирования = YES, просто установите размер представления в contenview, но все же это не идеальное решение. Я только что справился с этой проблемой. – Smile

ответ

9

UITableViewCell иерархии подвидов отличается прошивкой 7 и 8 прошивкой, попробуйте мое решение.

- (void)layoutSubviews { 

    [super layoutSubviews]; 

    for (UIView *subview in self.subviews) { 

     // for iOS 8 
     if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"]) { 
      [self bringSubviewToFront:subview]; 
      return; 
     } 



     // for iOS 7 
     for (UIView *subview2 in subview.subviews) { 
      if ([NSStringFromClass([subview2 class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"]) { 
       [subview bringSubviewToFront:subview2]; 
       return; 
      } 
     } 

    } 
} 
+0

Эй, @ Lee Jeff Я пробовал ваш код, он работает как шарм. Большое вам спасибо. Один из последних вопросов я много искал в яблочных документах. Не могли бы вы поделиться ссылкой, откуда у вас есть? – Tendulkar

+0

Последний вопрос: если я использую ваш код, яблоки примут мое приложение или нет? Пожалуйста, дайте мне знать – Tendulkar

+1

Привет @Tendulkar, пожалуйста, попробуйте этот инструмент, это потрясающе [link] (https://github.com/Flipboard/FLEX) , мое приложение продается сейчас, не волнуйтесь об отзывах. –

1

Вам нужно добавить кнопку в contentView, не Cell View непосредственно

+0

Я добавил в contentView только. Проверьте мой выше комментарий – Tendulkar

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