使用UIViews和UIImageViews([[[UIApplication sharedApplication]窗口]子視圖])的數組。我只需要刪除UIImageView類型的最高索引對象。NSArray刪除類型的最後一個對象?
回答
另一個基於塊的溶液
[window.subviews enumerateObjectsWithOptions:NSEnumerationReverse
usingBlock:^(id view, NSUInteger idx, BOOL *stop)
{
if ([view isKindOfClass:[UIImageView class]]){
[view removeFromSuperview];
*stop=YES;
}
}];
非塊溶膠ution:
for (UIView *view in [window.subview reverseObjectEnumerator])
{
if ([view isKindOfClass:[UIImageView class]]){
[view removeFromSuperview];
break;
}
}
編輯
我發表了演示代碼,顯示這兩個解決方案,在github。
該塊更漂亮。 – Kyle 2012-02-03 16:16:06
這些可以通過直接在循環中刪除視圖來改進,那麼您不再需要viewToRemove變量。 – 2012-02-03 16:22:57
你確定嗎?在快速枚舉中枚舉時禁止更改數組。 – vikingosegundo 2012-02-03 16:24:21
如何:
UIWindow *window = [[UIApplication sharedApplication] window];
UIView *imageView = nil;
for (UIView *view in window.subviews)
{
if ([view isKindOfClass:[UIImageView class]])
{
imageView = view;
}
}
//this will be the last imageView we found
[imageView removeFromSuperview];
不管怎樣,凱爾都喜歡你的解決方案,所以我猜你贏了,哈哈;-) – 2012-02-03 16:21:01
:)我的代碼通常每天花在鏡子前30分鐘,變得漂亮。 – vikingosegundo 2012-02-03 16:22:45
看到我上面的評論 - 你可以進一步改善它。 – 2012-02-03 16:24:31
可以使用indexOfObjectWithOptions:passingTest:
方法來搜索反向陣列對於通過使用塊的測試對象,然後在所得到的位置刪除該對象:
NSUInteger pos = [myArray indexOfObjectWithOptions:NSEnumerationReverse
passingTest:^(id obj, NSUInteger idx, BOOL *stop) {
return [obj isKindOfClass:[UIImageView class]]; // <<== EDIT (Thanks, Nick Lockwood!)
}];
if (pos != NSNotFound) {
[myArray removeObjectAtIndex:pos];
}
這是一個很好的解決方案,但是您應該使用isKindOfClass而不是==來比較類型,否則如果UIImageView實際上是UIImageView的子類,它將不起作用。 – 2012-02-03 16:26:23
@NickLockwood這是一個很好的結果,非常感謝您發現問題! – dasblinkenlight 2012-02-03 16:31:45
您還需要添加一個pos!= NSNotFound的檢查,否則會崩潰,如果該數組不包含UIImageView。 – 2012-02-03 17:50:45
- 1. 的NSMutableArray刪除對象1最後一個對象
- 2. 在Django admin中,如何防止刪除類型的最後一個對象
- 3. SWObject最後刪除對象
- 4. 有關複製NSArray的最後一個對象的問題
- 5. NSArray中沒有刪除對象
- 6. 如何檢查對象是否是NSArray上的最後一個對象
- 7. 嘗試從元組中刪除最後一個類型失敗
- 8. 「ID」類型對象的NSArray問題
- 9. 刪除最後一個孩子Json嵌套對象
- 10. 無法從fetchedResultsController中刪除最後一個對象
- 11. 不能刪除沒有最後一個對象
- 12. 更有效的刪除第一個和最後一個對象的方法
- 13. 類型的最後一個/類的最後一個孩子?
- 14. 如何從另一個NSMutableArray中移除一個NSArray的對象?
- 15. 從NSArray中選擇對象進一步用IBAction刪除
- 16. 的multi_index_container刪除最後一個元素
- 17. 刪除整數的最後一個數
- 18. 刪除NSString的最後一個字符
- 19. Jquery獲取多個元素的刪除類exept最後一個
- 20. 刪除一個元素上的最後3個類?
- 21. 刪除對象在一段時間後從一個特定的類
- 22. 簡單的方法來刪除遊戲對象的最後一個孩子
- 23. 刪除Backbone集合中的最後一個模型
- 24. Django - 獲取具有多個對象的模型的最後一個對象
- 25. NSMutableArray-刪除對象和刪除對象的結果刪除對象和一個零元素
- 26. 刪除對象的一個屬性
- 27. RethinkDB - 刪除一個嵌套的對象
- 28. 如何刪除類對象?
- 29. 刪除字符串中最後一個空格後的最後一個字符
- 30. jQuery刪除類的最後一個孩子
注意:您需要使用NSMutableArray而不是NSArray。 – Moshe 2012-02-03 15:37:00