2

현재 동일한 ViewController.h 및 ViewController.m 파일을보고있는 3 개의보기 컨트롤러간에 UITextField의 텍스트를 전달하려고 다음 코드를 사용하고 있습니다.Xcode : 스토리 보드 탭 응용 프로그램 데이터 전달하기

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"NameOfSegue"]) { 
     ViewController *ibcVC = segue destinationViewController; 
     ibcVC.myTextField = self.myTextField; 
    } 
} 

다음과 같은 순서로 연결된 뷰 컨트롤러가 있습니다. ViewC1 => ViewC2 => ViewC3.

내 UITextField는 ViewC2에 있습니다.

내가 ViewC3에 넣습니다 예를 들어 ViewC2에 버튼을 클릭

, 그것은 ViewC3에 잘 데이터를 전달합니다. 그러나 내가 현재 ViewC2에 있다고 가정하고, UITextView에 뭔가를 입력 한 다음 Xcode가 탭 응용 프로그램으로 작업 할 때 자동으로 넣는 탐색의 뒤로 단추를 클릭하면 ViewC1으로 이동합니다. 예상대로 괜찮아. 그러나 내가 밀어 넣는 ViewC1의 버튼을 ViewC2으로 누르면 UITextField에 입력 한 데이터/텍스트가 지워지거나 null로 재설정됩니다.

데이터 EX 올바르게 밀어 :

그래서, 기본적으로 현재 시각 약간 디지털를 사용하는 문제이다. WE가 NAVIGATION EX ON '뒤로'버튼을 누르면

ViewC1 => ViewC2 => ViewC3

데이터는 소거된다.

는 ViewC1 < = ViewC2

+0

viewc1로 돌아가려면 어떤 방법을 사용하고 있습니까? dismissmodalviewcontroller? – Pochi

+0

하나를 사용할 필요가 없습니다. Xcode는 탭 응용 프로그램을 사용하고 뷰 컨트롤러와 푸시 세그를 연결할 때 탐색에서 뒤로 버튼을 자동으로 만듭니다. 그 부분에 대해 Storyboard를 사용하고 있기 때문에 모든 것이 IB에서 수행되고 푸싱 등을 처리 할 때 프로그래밍이 필요하지 않습니다. 그렇지만 Xcode가 그 부분으로 무엇을하고 있는지 알면 아마 그것을 알아낼 수 있습니다. – John

답변

2

하나 개의 솔루션은 싱글에 문자열을 저장하는 것입니다.

SharedStrings.h =

#import <Foundation/Foundation.h> 

@interface SharedStrings : NSObject{ 
    NSString *string; 
} 

+(SharedStrings *)sharedString; 
-(void)setString:(NSString *)newString; 
-(NSString *)getString; 

@end 

SharedStrings.m =

#import "SharedStrings.h" 

static SharedStrings *sharedString; 

@implementation SharedStrings 

-(id)init{ 

    self = [super init]; 
    string = [NSString new]; 
    return self; 
} 

+(SharedStrings *)sharedString{ 
    if (!sharedString) { 
     sharedString = [[SharedStrings alloc] init]; 
    } 
    return sharedString; 
} 

-(void)setString:(NSString *)newString{ 
    string = newString; 
} 
-(NSString *)getString{ 
    return string; 
} 

@end 
당신은 모든 귀하의 의견은과 같이 얻을하고 필요에 따라 문자열을 설정 할 수

:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [myTextField setText:[[SharedStrings sharedString] getString]]; 
    [super viewWillAppear:animated]; 
} 

-(void)textFieldDidEndEditing:(UITextField *)textField{ 

    if (textField == enterInfoTF) { 
     [[SharedStrings sharedString] setString:textField.text]; 
    } 
} 
+0

위대한, 훌륭한 답변을 작동합니다. – Grymjack

관련 문제