UIView没有显示

时间:2017-01-12 09:02:38

标签: swift xcode uiview swift3

我试图通过调用以下函数来创建一个简单的UIView:

http:/127.0.0.1:4001

我没有得到任何错误,但UIView似乎没有出现。文本“Test”被打印到控制台,告诉我这不是函数调用问题。另外需要注意的是,我在程序的不同部分使用完全相同的代码来创建不同的UIView,并且该代码完美无缺。我完全不知道为什么这段代码不起作用。起初我认为它可能是一个zPosition问题,但在尝试使用zPosition之后我没有看到任何区别。

然后我认为它可能与调用函数时已经显示其他UIViews有关,并且函数“应该”创建的新函数没有显示,因为程序正在思考“没关系,你这里已经有了一个UIView先生!不需要再展示另一个!”,尽管可能很奇怪。

更新: 我在另一个名为func loadCell() { let cell : UIView! cell = UIView(frame: CGRect(x:50, y:50, width:50, height:50)) cell.backgroundColor = UIColor(red:1.00, green:0.00, blue:0.00, alpha:1.00) self.view?.addSubview(cell) print("Test") } 的函数中调用loadCell函数。 drawGrid()是一个简单的嵌套for循环,它创建了一个UIViews x和y的网格。 drawGrid()函数在第1级产生时效果很好,但是一旦第1级完成,我会尝试在第2级生成,即它不会产生下一组UIViews。它将我的所有drawGrid()多次打印到控制台,这告诉我它已经到达程序中的那一点但不想创建下一个UIViews网格。

更新2:

print("Test")

正如你所看到的,我在开头发布的函数有点不同,因为我删除了不必要的,不相关的代码,不要混淆。我已经把它全部添加到这里了,如果有什么你不确定只是问:)我还添加了“BreakGrid()”函数删除/删除UIViews的上一个网格。删除后,我再次运行drawGrid()进行下一级。

4 个答案:

答案 0 :(得分:0)

  

当我打印(self.view)时,它只打印nil

这意味着您的self.viewnil,因此您的单元格没有任何子视图。您应该检查视图为nil的原因。可能在调用self时尚未将其添加到loadCell()

请关注视图为nil的原因。

答案 1 :(得分:0)

在您的视图初始化之前,您很可能过早地调用方法(可能是从viewDidLoad调用?)。这可以解释为什么print(self.view)是nil

尝试为viewWillAppear

调用您的方法
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    loadCell()
}

答案 2 :(得分:0)

我检查了你的代码,它的工作非常完美。可能您的视图未正确更新。你能在主线上试试吗?

DispatchQueue.main.async {
        let cell : UIView!
        cell = UIView(frame: CGRect(x:50, y:50, width:50, height:50))
        cell.backgroundColor = UIColor(red:1.00, green:0.00, blue:0.00, alpha:1.00)
        self.view.addSubview(cell)
        print("Test")
    }

答案 3 :(得分:0)

请试试这个

 func loadCell() {
        let cell : UIView = UIView(frame: CGRect(x:50, y:50, width:50, height:50))
        cell.backgroundColor = UIColor(red:1.00, green:0.00, blue:0.00, alpha:1.00)
        self.view?.addSubview(cell)
        print("Test")
        print(self.view)
    }

它可能对你有用 我在初始化时给出了大小。