IBOutlet 배열과 같은 것을 사용할 수 있습니까?
-
20-09-2019 - |
문제
현재 iPhone 앱에는 코드로 채워진 상위 목록 보기가 있습니다.저는 Interface Builder를 사용하여 뷰를 구성했습니다. UILabel
에스.
분명 난 갖고 싶지 않을 거야 name1
, name2
, 등.내 수업에는 콘센트가 있지만 name[10]
정렬.
그렇게 할 수 있고 각 항목을 적절한 레이블(또는 보기와 같은 다른 인터페이스 빌더)에 연결할 수 있습니까?
해결책
IB에서는 할 수 없지만 IB에서 배열을 만들 수 있습니다. init
방법을 선택하고 여기에 모든 라벨을 추가하세요.
그런데 각 레이블에 일부 태그를 설정하고 매크로를 정의하여 액세스할 수 있습니다.아주 좋아
#define NAME[TAG] (UILabel*)[self.view viewWithTag:TAG]
다른 팁
물론 인터페이스 빌더를 사용하여 이 작업을 수행할 수 있습니다. 키워드는 다음과 같습니다. IBOutletCollection
.그것이 하는 일은 기본적으로 여러 인터페이스 빌더 아웃렛에서 나온 NSArray입니다.
IBOutletCollection(UILabel) NSArray *myLabels;
따라서 다음 작업은 인터페이스 빌더에서 레이블을 연결하는 것입니다. 그런 다음 배열을 사용하여 런타임에 모든 레이블에 액세스할 수 있습니다.
이는 콘센트 컬렉션을 사용하여 수행할 수 있습니다. 이 관련 질문.
IB 요소와 연결하는 콘센트 배열을 생성하려면 다음 단계를 따르십시오. UIView
, 당신이 사용할 수있는 UILabel
또한):
- IBOutlet 배열 생성
- Storyboard ViewController 인터페이스에 여러 UIElement(뷰) 추가
- ViewController(스토리보드에서)를 선택하고 연결 검사기를 엽니다.
- 연결 검사기에는 'Outlet Collections' 옵션이 있습니다(거기서 일련의 콘센트가 표시됩니다).
- 인터페이스 요소가 있는 경우 연결
-
class ViewController2: UIViewController {
@IBOutlet var collection:[UIView]!
override func viewDidLoad() {
super.viewDidLoad()
}
}
제휴하지 않습니다 StackOverflow