removeFromSuperview удаляет все подпункты

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { NSLog(@"will rotation"); for (UIButton *button in self.view.subviews) { [button removeFromSuperview]; } } 

У меня проблема с этим кодом. Мне нужно удалить только UIButtons из моего представления. Но этот код также удаляет все подзаголовки моего self.view. Как я могу это решить?

Сделай это:

 - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { NSLog(@"will rotation"); for (id subview in self.view.subviews) { if([subview isKindOfClass:[UIButton class]]) //remove only buttons { [subview removeFromSuperview]; } } } 

Вы повторяете все взгляды и отбрасываете их в UIButton, а не итерации UIButtons. Попробуй это:

 - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { NSLog(@"will rotation"); for (UIView *button in self.view.subviews) { if ([button isKindOfClass:[UIButton class]]) { [button removeFromSuperview]; } } } 
 for (id button in self.view.subviews) { if(button isKindOfClass:[UIButton class]) { [button removeFromSuperview]; } } 

self.view.subviews будет извлекать все subviews, и использование типа UIButton * таким образом не фильтрует список, он просто намекает компилятору, что вы ожидаете, что сможете обрабатывать такие объекты, как UIButtons. Вы должны проверить каждый из них следующим образом:

 for (UIView *subview in self.view.subviews) { if([subview isKinfOfClass:[UIButton class]]) [subview removeFromSuperview]; } 

Один из вариантов – создать тег в верхней части файла

 #define BUTTONSTODELETE 123 

и затем установите каждую из buttons.tag = BUTTONSTODELETE

В заключение :

 for (UIButton *v in [self.view subviews]){ if (v.tag == BUTTONSTODELETE) { [v removeFromSuperview]; 

Гарантируется удаление только элементов с этим тегом

EDIT: у Maulik и fbernardo есть лучший, менее грязный способ

  • Определение первого и последнего UITableViewCell
  • Переключатель управления запуском Xcode
  • используя touchhesbegan и touchhesmoved, чтобы отличить щелчок и перетаскивание
  • HTML-файлы в UIWebView очень медленны для прокрутки - Pdf2htmlEX
  • Как заставить пользователей просматривать приложение только при подключении к сети?
  • Как преобразовать значение ползунка в integer в ios?
  • Изменение направления перехода ViewController?
  • Как я могу точно определить, что такое идентификатор моего кода?
  • Можно ли использовать UILocalNotification без отображения сообщения?
  • API Twitter для iPhone?
  • Почему методы библиотеки (делегата) не вызываются? CocoaAsyncSocket
  • Interesting Posts

    В чем разница между isMainThread и currentThread == mainThread?

    iOS: клавиатура появляется автоматически в ios8, но не может отменить текстовое поле

    начинающий, чтобы использовать assimp в ios

    NSGenericException, NSMutableArray дает некоторую проблему

    AVAudioPlayer и NSUserDefaults

    Как вы создаете сборки для клиентов, когда они не хотят предоставлять вам доступ к своей учетной записи разработчика?

    Получение сообщения EXC_BAD_ACCESS со следующим кодом

    Тестирование VoiceOver: как я могу проверить, что мои уведомления UIAccessibilityLayoutChangedNotification работают?

    Как добавить видео на страницу раскадровки (Xcode 6)

    Получатель «SMClient» для сообщения класса – это декларация

    Проблемы, связанные с iVar во внутреннем классе

    Как заблокировать фокус внутри модального всплывающего окна на iOS, используя протокол UIAccessibility?

    Как отключить жест повторного салфетки в ответном натурном навигаторе

    Swift – прокрутка вниз UITableView снизу медленно

    Создание многомерных массивов в iOS

    Давайте будем гением компьютера.