我试图通过调用以下函数来创建一个简单的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()进行下一级。
答案 0 :(得分:0)
当我打印(self.view)时,它只打印nil
这意味着您的self.view
为nil
,因此您的单元格没有任何子视图。您应该检查视图为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)
}
它可能对你有用 我在初始化时给出了大小。