Swift 3 - 新UIView在删除前一个后不显示

问题描述:

我已经设置了一个简单的演示来解释我的问题。我有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

我确实尝试过用两个按钮的简单设置代码,它工作正常。 Iam附加结果的屏幕快照。按钮'添加所有视图'在屏幕上添加了三个视图,即我调用loadGridCell(xPos:Int)中的代码,为X位置提供不同的值。 'Button'删除所有添加的视图,调用loadNextCell()中的代码。你能否提供更多关于流量如何发生的信息。另外,如果您可以附加xcode提供的View Debugger的屏幕截图,这将会很有帮助。这表明你已经奠定了 Added all the views After removing all views and adding just one view