Я пытаюсь создать простой UIView с помощью вызова следующей функции: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")
}
Я не получаю никаких ошибок, однако UIView, кажется, не появляется. Текст «Тест» печатается на консоль, который говорит мне, что это не проблема с вызовом функции. Другое дело, что я использую тот же самый код в другой функции в другой части моей программы, чтобы создать другой UIView, и этот код работает отлично. Я не знаю, почему этот код не работает. Сначала я думал, что это может быть проблема zPosition, но после экспериментов с zPosition я не вижу разницы.
Я тогда подумал, что это может быть связано с тем, что уже существуют другие UIViews, отображаемые во время вызова функции, а новый, который функция «должна» создавать, не отображается, потому что программа «Все в порядке, у вас уже есть UIView здесь, сэр! Не нужно отображать другого!», как это ни странно.
Обновление: Я вызываю функцию loadCell внутри другой функции, называемой drawGrid()
. drawGrid() - простой вложенный цикл, который создает сетку UIViews x вдоль и y high. Функция drawGrid() отлично работает при нерестах на уровне 1, но как только уровень 1 завершен, и я пытаюсь появиться на уровне 2, а это не порождает следующий набор UIViews. Он печатает все мои print("Test")
s в консоли несколько раз, что говорит мне, что он добирается до этой точки в программе, но не хочет создавать следующую сетку UIViews.
Update 2:
var gridSizeX:Int = 10
var gridSizeY:Int = 10
var gridArray: [[UIView?]] = Array(repeating: Array(repeating: nil, count: gridSizeY), count: gridSizeX)
func loadCell(xPos:Int, yPos:Int) {
let xStart = Int(size.width/2/2) - ((gridSizeX * gridScale)/2)
let yStart = Int(size.height/2/2) - ((gridSizeY * gridScale)/2)
let cell : UIView!
cell = UIView(frame: CGRect(x: xStart + (xPos * gridScale), y:yStart + (yPos * gridScale), width:gridScale, height:gridScale))
cell.layer.borderWidth = 1
cell.layer.borderColor = UIColor(red:0.00, green:0.00, blue:0.00, alpha:0.02).cgColor
cell.backgroundColor = UIColor(red:1.00, green:1.00, blue:1.00, alpha:0)
self.view?.addSubview(cell)
gridArray[xPos][yPos] = cell
}
func drawGrid() {
for y in 0 ... gridSizeY {
for x in 0 ... gridSizeX {
loadCell(xPos:x, yPos:y)
}
}
}
func breakGrid() {
for y in 0 ... gridSizeY - 1 {
for x in 0 ... gridSizeX - 1 {
gridArray[x][y]?.removeFromSuperview()
}
}
}
Как вы можете видеть, функции я разместил здесь в начале немного иначе, как я удалил ненужные, ненужную код не запутаться. Я добавил все это здесь, и если есть что-то, о чем вы не знаете, просто спросите :) Я также добавил функцию «BreakGrid()» при удалении/удалении предыдущей сетки UIViews. и после удаления я снова запустил drawGrid() для следующего уровня.
Что он показывает, когда вы печатаете (self.view) '? – Keiwan
Я проверил его, и ваш код отлично работает для меня –
Когда я делаю 'print (self.view)' он просто печатает 'nil'. Таким образом, может возникнуть проблема. Я понятия не имею, почему это было бы так, поскольку Xcoder123 просто заявил, что он работает, но не хочет в моем проекте. Довольно странно – Terminal