Xcode:Storyboard选项卡式应用程序将数据传回
发布时间:2020-12-15 01:46:29 所属栏目:百科 来源:网络整理
导读:我目前正在使用以下代码尝试在UITextField中传递3个视图控制器之间的文本,这些视图控制器正在查看相同的ViewController.h和ViewController.m文件: - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualT
我目前正在使用以下代码尝试在UITextField中传递3个视图控制器之间的文本,这些视图控制器正在查看相同的ViewController.h和ViewController.m文件:
- (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自动放置的导航上单击Back按钮,当使用选项卡式视图应用程序时,它将按照预期正常运行ViewC1.但是,如果按下ViewC1上按下ViewC2的按钮,我在UITextField中键入的数据/文本已被删除或重置为空. 所以基本上这里是使用轻微数字视觉的问题: 数据被正确推送EX. ViewC1 => ViewC2 => ViewC3 如果我们在NAVIGATION EX上按下后退按钮,数据就会被删除. ViewC1< = ViewC2 解决方法
一种解决方案是将字符串存储在单例中.
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]; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |