2010-05-03 4 views
0

안녕하세요, 현재 iPhone SDK를 사용하고 있는데 NSString을 3 개보기로 전달하는 데 문제가 있습니다3 개의 ViewController를 통해 NSString을 전달하는 방법은 무엇입니까?

NSString을 2 개의보기 컨트롤러간에 전달할 수는 있지만 다른 항목을 통해 전달할 수 없습니다. 다음과 같이 내 코드 "의 ViewController 2"구현에

`- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)index`Path { 

NSString *string1 = nil; 

NSDictionary *dictionary = [listOfItems objectAtIndex:indexPath.section]; 
NSArray *array = [dictionary objectForKey:@"items"]; 
string1 = [array objectAtIndex:indexPath.row]; 


//Initialize the detail view controller and display it. 
ViewController2 *vc2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:[NSBundle mainBundle]]; 
vc2.string1 = string1; 
[self.navigationController pushViewController:vc2 animated:YES]; 
[vc2 release]; 
vc2 = nil; 
} 

내가 다음 ....

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.navigationItem.title = string1; 
UIBarButtonItem *addButton = [[[UIBarButtonItem alloc] 
      initWithImage:[UIImage imageNamed:@"icon_time.png"] 
      style:UIBarButtonItemStylePlain 
      //style:UIBarButtonItemStyleBordered 
      target:self 
      action:@selector(goToThirdView)] autorelease]; 
self.navigationItem.rightBarButtonItem = addButton; 

    } 

하지만를 수행하여 제목 표시 줄에 수 사용 "문자열 1을"나는 ...이다 또한 내가

- (void)goToThirdView 
    { 
    ViewController3 *vc3 = [[ViewController3 alloc] initWithNibName:@"ViewController3" bundle:[NSBundle mainBundle]]; 

    [self.navigationController pushViewController:NESW animated:YES]; 
    vc3.string1 = string1 ; 
    [vc3 release]; 
    vc3 = nil; 
} 

는 어떻게 세 번째보기에 같은 문자열을 통과 할 새보기를 밀어 싶습니다 오른쪽에 Navbar의 버튼이 있습니까? (또는 네 번째)

답변

0

앞서 질문 한 question의 코드 샘플을 찾을 수 있습니다.

1

vc3에 문자열을 놓기 전에 문자열을 설정하여보기 및 탐색 모음이 표시 될 때 해당 문자열이 있는지 확인하기 위해 필요한 것은 예외입니다. 그것이 작동하는 vc2에있는 방법입니다.

그러나 응용 프로그램 디자인의 관점에서보기 컨트롤러간에 직접 값을 전달하는 것은 좋지 않습니다. 이상적으로는 다른 컨트롤러가 선행했는지 여부에 관계없이 뷰 컨트롤러를 독립 실행 형으로 사용할 수 있어야합니다. (이것은 중단 된 시점으로 앱을 다시 시작해야 할 때 정말로 중요합니다.)보기 컨트롤러가 상호 의존성을 갖게되면 앱이 커지면서 복잡하게 늘어납니다.

보기간에 데이터를 교환하는 가장 좋은 방법은 보편적으로 액세스 할 수있는 장소에 데이터를 주차하는 것입니다. 그것은 응용 프로그램 상태 정보가 사용자 기본값에 넣어하거나 응용 프로그램 대리인의 특성에 넣을 수 있다면. 사용자 데이터 인 경우 전용 데이터 모델 객체 (단일 객체이거나 응용 프로그램 대리자를 통해 액세스 할 수 있음)에 있어야합니다.

관련 문제