문제는 다음과 같습니다
var gridArray : [[UIView]] = [[UIView]]()
지금 내가 UIViews와 배열을 채우기 위해 시도 배열 배열을 만들고 있지만 내부 배열을 만들지는 않습니다. 빈 배열을 인덱싱 할 수 없습니다. 이 같은 UIView?
의 11 x 11
배열을 만들 수 있습니다
var gridArray: [[UIView?]] = Array(repeating: Array(repeating: nil, count: 11), count: 11)
는 그런 다음 코드는
UIView
의와 배열이 작동 채우기 위해. 나중에 읽을 때
UIView?
의 껍질을 벗겨야합니다. 그러나 배열을
UIView
으로 채우므로 무력화가 충돌없이 작동하는 경우입니다.
let cell = gradArray[x][y]!
@rmaddy이 코멘트에 언급 한 바와 같이, 당신은 배열을 초기화하는 더미의 UIView을 사용할 수
var gridArray: [[UIView]] = Array(repeating: Array(repeating: UIView(), count: 11), count: 11)
를이 UIView
여기에 121 참조를 가지고 있고, 그것은 것 것 모든 참조가 실제 UIView
으로 대체 된 후 ARC에 의해 해제 될 수 있습니다.
이점은 (선택 사항)UIView
입니다. 따라서 언 래핑이 필요하지 않을 수 있습니다. 스위프트는 추론 할 수있을 것입니다 때문에
또한, 당신은 다음 유형을 드롭 수 : 기본 이니셜 라이저와 배열, 배열이 비어 초기화하면
var gridArray = Array(repeating: Array(repeating: UIView(), count: 11), count: 11)
작품! 고맙습니다. – Terminal
루프 안의 실제 뷰로 대체되는 하나의 더미 UIView 인스턴스로 내부 배열을 채워 선택적 뷰를 피할 수 있습니다. – rmaddy
감사합니다. @rmaddy. 더미 UIView 사용에 대한 토론을 포함하도록 답변을 업데이트했습니다. – vacawama