Ответ 1
Обновлен для Swift 2.0 (Xcode 7)
Используйте forEach
:
self.view.subviews.forEach { subview in
subview.removeFromSuperview()
}
Или вот так:
view.subviews.forEach { $0.removeFromSuperview() }
В Objective-C Я использую этот код для удаления любых под-представлений:
[self.view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
Но как его использовать быстро? Я видел документацию на яблоко, чтобы использовать этот метод в быстрой
func makeObjectsPerformSelector(_ aSelector: Selector)
но когда я пытаюсь, я получаю сообщение об ошибке: 'AnyObject[]' does not have a member named 'makeObjectsPerformSelector'
Есть ли способ удалить подменю в swift?
Используйте forEach
:
self.view.subviews.forEach { subview in
subview.removeFromSuperview()
}
Или вот так:
view.subviews.forEach { $0.removeFromSuperview() }
Он работает только с объектами NSArray и NSMutableArray.
Это будет работать:
let ar: NSArray = [obj1, obj2, obj3]
ar.makeObjectsPerformSelector("someSelector")
Обратите внимание, что если у вас есть Array<AnyObject>
, вы можете свободно конвертировать в NSArray
и наоборот.
let anNSArray: NSArray = anArrayOfAnyObject
anNSArray.makeObjectsPerformSelector( "someSelector")
Начиная с Xcode 7, полное семейство методов performSelector доступно в Swift, включая makeObjectsPerformSelector()
для NSArray
.