2

我目前使用下面的代码来尝试在3个视图控制器之间传递文本在UITextField中查看相同的ViewController.h和ViewController.m文件:Xcode:故事板选项卡式应用程序传回数据

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

我有3个视图控制器按以下顺序链接:ViewC1 => ViewC2 => ViewC3。

我的UITextField在ViewC2上。

当我点击按钮上ViewC2例如,在ViewC3推时,它把数据蛮好ViewC3。但是,假设我目前在ViewC2,我在UITextView中输入了一些内容,然后点击Xcode在使用选项卡式视图应用程序时自动放置的导航上的后退按钮,它将带我到ViewC1只是如预期那样好。但是,如果我按ViewC1上的按钮,推入ViewC2,我的UITextField中键入的数据/文本已被擦除或重置为空。

所以基本上在这里是用轻微的数字视觉问题:

数据正确PUSHED EX。

ViewC1 => ViewC2 => ViewC3

数据被擦除;如果我们按下后退按钮ON NAVIGATION EX。

ViewC1 < = ViewC2

+0

你用什么方法回到viewc1? dismissmodalviewcontroller? – Pochi 2012-03-12 03:04:40

+0

你不必使用一个。当您使用选项卡式应用程序和链接视图控制器与Push Segue时,Xcode会自动在导航中创建一个后退按钮。我正在使用Storyboard作为那个部分,所以一切都在IB中完成,并且在处理推送等时不需要编程。但是,如果我知道Xcode在处理这部分内容时可能会弄清楚。 – John 2012-03-12 03:07:55

回答

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

伟大的作品,excellant答案 – Grymjack 2013-01-02 07:26:36

相关问题