2014-10-08 66 views
1

我正在開發一個益智遊戲,我添加了所有圖像視圖到NSMutableArray但我想刪除它的第一陣列,它是在指數0我的代碼是:如何從索引中刪除UIImageView?

override func viewDidLoad() { 
    super.viewDidLoad() 

    var allImageViews : NSMutableArray = NSMutableArray() 

    var xCen :CGFloat = 53 
    var yCen :CGFloat = 94 

    for v in 0...2{ 

     for h in 0...2{ 

      let filename = String(format: "kat_%02i.gif", h+v*3) 
      let Image = UIImage(named: filename) 
      let myImageView = UIImageView(image: Image) 
      myImageView.frame = CGRectMake(0, 0, 106, 189) 
      myImageView.center = CGPointMake(xCen, yCen) 
      myImageView.userInteractionEnabled = true 
      allImageViews.addObject(myImageView) 
      self.view.addSubview(myImageView) 
      xCen += 106 
     } 
     xCen = 53 
     yCen += 189 
    } 
    allImageViews.removeObjectAtIndex(0) 

} 

我想我從指數,但其刪除對象當我運行項目時仍然出現,所以任何人都可以告訴我如何從超級視圖中刪除第一個圖像?

+0

您正在添加圖像兩次。刪除其中一個allImageViews.addObject(myImageView) – ytbryan 2014-10-08 06:49:58

回答

1

就叫removeFromSuperview的觀點從陣列中取出前:

allImageViews[0].removeFromSuperview() 
allImageViews.removeObjectAtIndex(0) 

如果您使用的是斯威夫特陣列代替NSMutableArray,那麼你得到更多類型 安全,你可以採取這樣的事實優勢removeAtIndex()返回 刪除的元素:

override func viewDidLoad() { 
    super.viewDidLoad() 

    var allImageViews : [UIImageView] = [] 

    var xCen :CGFloat = 53 
    var yCen :CGFloat = 94 

    for v in 0...2{ 

     for h in 0...2{ 

      let filename = String(format: "kat_%02i.gif", h+v*3) 
      let Image = UIImage(named: filename) 
      let myImageView = UIImageView(image: Image) 
      myImageView.frame = CGRectMake(0, 0, 106, 189) 
      myImageView.center = CGPointMake(xCen, yCen) 
      myImageView.userInteractionEnabled = true 
      allImageViews.append(myImageView) 
      self.view.addSubview(myImageView) 
      xCen += 106 
     } 
     xCen = 53 
     yCen += 189 
    } 

    allImageViews.removeAtIndex(0).removeFromSuperview() 
}