2014-06-21 10 views
1

두 개의보기 (AB) 사이에 탐색이있는 ios 응용 프로그램을 구축 중입니다.팝업보기의 매개 변수 전달

탐색 패턴은 다음과 같습니다

ViewController A >>> PushViewController >>> ViewController B 

ViewController A <<< PopViewController <<< ViewController B 

내가 B 다시 A에 나올 때 싶지는 이에 따라 일부 UI 요소를 업데이트합니다. 예를 들어, A보기 컨트롤러는 텍스트와 함께 일부 레이블을 표시하고 B 사용자가 텍스트를 수정하고보기가 팝업되면 변경하고 반영하도록 A을 원합니다.

질문은 다음과 같습니다. AB에서 언제 표시되는지 알 수 있습니까? 그리고 A은 데이터를 전달하여 B에 전달할 수 있으므로 콘텐츠를 업데이트 할 수 있습니까? 이런 종류의 문제를 해결하기위한 좋은 방법은 무엇입니까?

감사합니다

당신은 NSNotificationCenter으로 쉽게 할 수
+0

당신이 당신의 컨트롤러에 대한 위임 프로토콜을 구현하는 생각 했나 도와입니까? –

+1

nsnotification 센터를 사용하거나 기본 뷰 컨트롤러를 네이버 게이트 컨트롤러에 내장하고 스토리 보드를 사용하여 세그를 설정하고 prepareForSegue를 사용하여 디스패치하고 밀어 넣기를 사용하여 값을 전달할 수 있습니다. – eddwinpaz

+0

질문을 다시 읽고 네이버 게이트 컨트롤러가 필요합니다. 그리고 a에서 b로 값을 전달하려면 b로 예상되는 값을 push 할 필요가 있습니다. 뷰 controller.m에서 뷰 controller.h를 가져오고 b에 전달하는 값을 a에 정의해야한다는 것을 알아야합니다. 나중에 스토리 보드 링크 a 및 b를 푸시 세그 (push segue)로 사용하십시오. 도움이되는지 말해주십시오 – eddwinpaz

답변

5

:

1보기 컨트롤러 :

// Assuming your label is set up in IB, otherwise initialize in viewDidLoad 
@property (nonatomic, strong) IBOutlet UILabel *label; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Add an observer so we can receive notifications from our other view controller 
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(updateLabel:) name:@"UpdateLabel" object:nil]; 
} 

- (void)updateLabel:(NSNotification*)notification 
{ 
    // Update the UILabel's text to that of the notification object posted from the other view controller 
    self.label.text = notification.object; 
} 

- (void)dealloc 
{ 
    // Clean up; make sure to add this 
    [[NSNotificationCenter defaultCenter]removeObserver:self]; 
} 

2보기 컨트롤러 :

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [super viewDidDisappear:animated]; 

    NSString *updateLabelString = @"Your Text Here";   
    // Posting the notification back to our sending view controller with the updateLabelString being the posted object 
    [[NSNotificationCenter defaultCenter]postNotificationName:@"UpdateLabel" object:updateLabelString; 
} 
+0

이 성공적으로 구현되었습니다. 뷰 컨트롤러를 팝핑 할 때 값을 전달하는 간단한 방법. – Moxarth

2

당신은 통과를위한 대리자를 사용할 수 있습니다사용 중에 부모보기 컨트롤러에 개체

단계별 데모 용 대표단 click here을 단계적으로 사용합니다.

는이 문제는 Question and answer