1

"[[UINavigationController alloc] initWithRootViewController : newItemController];"를 통해 모달로 표시된 하위 UINavigationController에 데이터를 전달하는 방법은 무엇입니까?모달 방식으로 (예 : initWithRootViewController를 통해) 제공되는 하위 UINavigationController에 데이터를 전달하는 방법

이 방법으로 자식 컨트롤러 (이 경우 newItemController)를 만드는 방법은 UINavigationController initWithRootViewController 메서드를 통해 초기화되므로 사용자 지정 newItemController init 메서드를 호출 할 수있는 것 같지 않습니다. 이리? 또한 사용자 정의 "setMyData"유형 메소드를 호출하기 위해 newItemController 인스턴스 자체에 액세스 할 수 없습니까?

NewItemController *newItemController = [NewItemController alloc]; 
newItemController.delegate = self; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:newItemController]; 
[self.navigationController presentModalViewController:navController animated:YES]; 

답변

4

코드에 NewItemController라는 init이 없습니다. 당신이 NewItemController을 만들 때

NewItemController *newItemController = [[NewItemController alloc] init]; 

지금, 당신이 당신의 자신의 초기화 만들 수 있습니다 :

-(id)initWithStuff:(NSString *)example { 
    self = [super init]; 
    if (self) { 
     // do something with the example data 
    } 
    return self; 
} 

을하거나 NewItemController 클래스의 핵심은

// header file 
@property (nonatomic, copy) NSString *example; 

// .m file 
@synthesize example; 

// when you create the object 
NewItemController *item = [[NewItemController alloc] init]; 
item.example = @"example string data"; 
1

에 속성을 추가 할 수 있습니다 예를 들어 네비게이션 컨트롤러에 데이터를 전달하지 않으면 네비게이션 컨트롤러의 루트보기 컨트롤러로 전달합니다.