2017-04-10 52 views
0

我已經設置了一個簡單的演示來解釋我的問題。我有2個功能。 1加載一個紅色的UIView,一個刪除當前的UIView,並用一個新的X位置替換它。我知道我可以改變當前UIView的x位置,但這不是重點。Swift 3 - 新UIView在刪除前一個後不顯示

我還需要一個數組來存儲在UIView的,這我創建像這樣:

var cellArray = Array<UIView>()

第一函數來加載的UIView如下:

func loadGridCell(xPos:Int) { 
    let cell = UIView(frame: CGRect(x: xPos, y: 20, width: 20, height: 20)) 

    cell.layer.borderWidth = 1 
    cell.layer.borderColor = UIColor(red:1.00, green:0.00, blue:0.00, alpha:0.90).cgColor 
    cell.backgroundColor = UIColor(red:1.00, green:0.00, blue:0.00, alpha:0.5) 

    self.view?.addSubview(cell) 
    cellArray.append(cell) 
    print("Spawning Cell") 
} 

這函數完美工作,並創建紅色的UIView。第二個功能如下:

func loadNextCell() { 
    print("Removing Current Cell") 

    for element in cellArray { 
     element.removeFromSuperview() 
    } 

    cellArray.removeAll() 

    print("Creating New Cell") 
    loadGridCell(xPos: 40) //This should create a new UIView with an x-position of 40 
} 

此功能也工作正常,直到它試圖用不同的X位置再次調用第一個函數。它刪除了第一個UIView完美,但似乎並不想創建下一個。最奇怪的部分是,函數被調用,顯示文本「Spawning Cell」,它告訴我新的UIView正在創建,但有些東西阻止它被顯示。

這可能是什麼原因造成的?

+0

你調用方法'loadNextCell'在主線程的意見層次? –

+0

我對Swift和iOS開發相當陌生,不知道究竟是什麼意思。我所知道的是loadNextCell函數是從用戶向下滑動時調用的,它來自GameViewController.swift中的swipeGesture,但loadNextCell和loadGridCell函數位於GameScene.swift文件中。對不起,如果我不能得到更多的援助。 – Terminal

回答

0

我確實嘗試過用兩個按鈕的簡單設置代碼,它工作正常。 Iam附加結果的屏幕快照。按鈕'添加所有視圖'在屏幕上添加了三個視圖,即我調用loadGridCell(xPos:Int)中的代碼,爲X位置提供不同的值。 'Button'刪除所有添加的視圖,調用loadNextCell()中的代碼。你能否提供更多關於流量如何發生的信息。另外,如果您可以附加xcode提供的View Debugger的屏幕截圖,這將會很有幫助。這表明你已經奠定了 Added all the views After removing all views and adding just one view