2012-05-17 3 views
2

내가 탭바 응용 프로그램을 가지고 많은 uitableviewcontrollers 및 uiviewcontrollers를 중첩한다고 가정 해 보겠습니다. 특정 컨트롤러에서 핸들을 얻는 데 사용할 코드 줄은 무엇입니까?객관적인 C에서 프로그래밍 방식으로 UIViewController에 액세스하려면 어떻게해야합니까?

예를 들어, 현재 탭 바 컨트롤러의 세 번째 탭인 uitableview 컨트롤러를 가져 오려고한다고 가정 해 봅시다. 나는 다음과 같은 코드를 가지고있는 MyObject.h/m 파일입니다 :

MyObject.h을

#import <Foundation/Foundation.h> 
#import "MyAppDelegate.h" 

@interface MyObject : NSObject 

-(void) myfunction; 

@end 

MyObject.m 내가 mytvc되도록 함께 /*Some line of code*/을 교체하는 무엇

#import "MyObject.h" 

@implementation MyObject 



-(void) myfunction { 

    UITableViewController * mytvc = /*Some line of code*/; 

} 
@end 

관심이있는 uitableviewcontroller를 가리키는 변수는 무엇입니까?

XCode 4.2를 사용하고 있습니다. 내 uiviewcontroller 각각을 보여주는 스토리 보드가 있습니다. Tabbar보기 컨트롤러가 xcode가 만든 첫 번째 항목이었습니다. 그래서 그게 앱의 최고라고 생각합니까?

답변

1

이 루트 뷰 컨트롤러이며, 앱 위임에 액세스 할 수있는 경우는 다음과 같이 컨트롤러에 액세스 할 수 있어야는 :

appDelegate.window.rootViewController 
1

rootViewController.tabBarController.viewControllers 각각의 루트 뷰 컨트롤러의 배열입니다 탭. tabBarController.selectedViewController 또는 tabBarController.selectedIndex을 설정하여 활성 뷰 컨트롤러를 설정할 수 있습니다.

앱 대리인의 경우는 self.window.rootViewController.tabBarController입니다. 보기 컨트롤러에서 그것은 self.view.window.rootViewController.tabBarController입니다.

[[self.view.window.rootViewController.tabBarController.viewControllers objectAtIndex:2] myFunction]은 다른보기 컨트롤러에서 사용자의 기능에 액세스합니다. 그것은 세 번째 탭이 네비게이션 컨트롤러가 아니라고 가정합니다.

탭에 탐색 컨트롤러가있는 경우 탐색 컨트롤러 구문을 추가해야합니다. [[[self.view.window.rootViewController.tabBarController.viewControllers objectAtIndex:2] navigationController].visibleViewController myFunction]은 전체 경로가됩니다. 그것을 보면 지금은 조금 우스운 것 같습니다.

관련 문제