2012-09-13 2 views
2

저는 iOS 프로그래밍을 처음 사용하며 스토리 보드를 학습하는 XCode로 작업하고 있습니다. 내 질문은IBOutlet을 사용하지 않고 프로그래밍 방식으로 뷰를 참조하는 방법

내가 IB를 사용하여 원하는보기를 추가했지만 IB에서 Ctrl + Drag를 사용하여 내 ViewController에 연결하고 싶지 않지만 프로그래밍 방식으로 동일한 작업을 수행하고 싶습니다. 코드에서 뷰의 인스턴스를 만들고 addSubView()를 사용하여 프레임을 설정하여 추가하는 방법을 제안하는 게시물이 있습니다. 하지만 코드에서 프레임과 크기를 하드 코딩하고 싶지는 않습니다. IB를 선호합니다. 나는 필요할 때 그들을 참조 할 필요가있다.

안드로이드에서는 레이아웃 XML에서 getIdByName()을 사용하여 동일한 작업을 수행 할 수 있습니다. 나는 비슷한 것을 찾고있다. 당신이보기의 Tag 속성을 설정 한 후 사용하여 코드에서 참조 할 수 있습니다 IB에서

감사

답변

3

:

int buttonTagNumber = 2; 
UIButton *myTaggedButton = (UIButton *)[self.view viewWithTag:buttonTagNumber]; 

태그 단지 int, 당신은 같은 그들 중 많은이있을 수 있습니다 너는 좋아한다. 하나의 계층 구조 내에서 두 개의 서로 다른보기에 동일한 태그를 사용하면 동작이 정의되지 않고 발견 된 첫 번째 태그를 가져옵니다.

+0

덕분에,이 일했다. 하지만 여전히 내 ViewController.h에 정의 된 IBOutlet이 있어야합니다. 제거하면 [ 2ndlife

+0

아, 인터페이스 빌더로 가서 콘센트에 대한 연결을 제거해야합니다. 콘센트 이름 옆에있는 십자 기호를 클릭하고 연결을 지우면 키 - 값 코딩 준수 오류가 발생하지 않고 콘센트를 제거 할 수 있습니다. – darvids0n

0

당신은 다음과 같이 드릴 다운 수 :

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"myStoryboard" bundle:nil]; 
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"myViewController"]; 
    UIView *view = [vc.view viewWithTag:1]; 
+0

안녕하세요, 스토리 보드에서 viewcontroller를 참조해야하는 경우 귀하의 답변이 좋게 유지됩니다. 이것은 내가 원하는 것이 아니며 viewcontroller에있는 뷰를 참조해야합니다. – 2ndlife

+0

그러면 viewWithTag 옵션이 당신을위한 해결책이 될 수 있습니다. – nooitaf

관련 문제