나는 자동차 응용 프로그램을 작성 중입니다. 다른보기 컨트롤러에 연결된 TabBar가 있습니다 (CarInfoViewController 중 하나임).TabBarController 모범 사례에서 ViewController 받기
나는
CarInfoViewController *myCarInfoController = [self.tabBarController.viewControllers objectAtIndex:2];
[myCarInfoController setSearchParam:vin];
내가 일을 대 objectAtIndex를 사용하여 TabBar의에서 직접 뷰 컨트롤러를 받고의 차이가 무엇인지 알고 싶다면 다음과 같은 방법을 사용하여 뷰 컨트롤러 중 하나에 데이터를 전달하고있어 다음 :
CarInfoViewController *myCarInfoController = [[CarInfoViewController alloc] init];
[myCarInfoController setSearchParam:vin];
두 가지 방법이 있습니다. 이런 경우 가장 좋은 방법이 무엇인지 궁금합니다.
모범 사례는 탭 막대 컨트롤러를 실제로 작성한 방법에 따라 다릅니다. 세 가지 방법 (내 대답 참조)은 완벽하게 '합법적'이며 장점과 단점이 각각 있습니다. 각 방법이 올바른 선택 일 수 있습니다. 그리고 거기에서부터 우리는 데이터를 전달하기 위해 개별 View Controller에 액세스하는 모범 사례에 대해 논의 할 수 있습니다. 또한 어떤 상황에서 데이터를 전달해야하는지 설명해야합니다. 똑똑한 방법으로 View Controller를 잡고 그 속성을 설정할 수 있습니다. 하지만 그것은 당신이 속한 구체적인 상황/상황에 달려 있습니다. –
@HermannKlecker 고마워요! 프로그래밍 방식으로 뷰 컨트롤러를 만들고 있는데 어떤 방법을 사용해야할지 확실하지 않았습니다. 그러나 당신의 대답은 나에게 좋은 이해를주었습니다. 고맙습니다. – Kaiusee
좋습니다, 프로그래밍 방식으로 만들 때 참조 (속성 또는 응용 프로그램 대리자 내에서 일반 인스턴스 변수 또는 메서드 내에서 로컬 변수가 메서드에서 사용되는 경우에만)를 보유하는 것이 좋습니다. myCarInfoController는 이미 로컬 변수입니다. 나중에 사용하기 위해 참조를 보관하십시오. 그런 다음 관심있는보기 컨트롤러가 탭 막대 구조 내에서 세 번째보기 컨트롤러라는 것에 의존하지 않습니다. –