Xcode: Storyboard选项卡式应用程序来回传递数据

标签 xcode uiviewcontroller uitabbarcontroller uitextfield storyboard

我当前正在使用以下代码尝试在查看相同 ViewController.h 和 ViewController.m 文件的 3 个 View Controller 之间传递 UITextField 中的文本:

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

我有 3 个 View Controller ,按以下顺序链接:ViewC1 => ViewC2 => ViewC3。

我的 UITextField 位于 ViewC2 上。

例如,当我单击 ViewC2 上的按钮(在 ViewC3 中推送)时,它会将数据很好地传递到 ViewC3。但是,假设我当前在 ViewC2 上,我在 UITextView 中输入一些内容,然后单击导航上的后退按钮(在使用选项卡式 View 应用程序时 Xcode 自动将其放在那里),这将需要我到 ViewC1 正如预期的那样。但是,如果我按下 ViewC1 上的按钮(在 ViewC2 中推送),我在 UITextField 中输入的数据/文本将被删除或重置为 null。

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

数据已正确推送。

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

然后,您可以根据需要获取所有 View 并设置字符串,如下所示:

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

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

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

关于Xcode: Storyboard选项卡式应用程序来回传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9661246/

相关文章:

ipad - TabBar 中的 UISplitViewController ( UITabBarController )?

c++ - 在 XCODE 5 中将 CPU 利用率提高到 100% 以上

ios - 切换选项卡后 UIViewcontroller 消失 UITabBarController

iphone - UIToolBar 位于 UITabBar 之上?

ios - 如何在没有 UIViewController 的情况下旋转可见的 iOS 键盘

ios - 如何创建类的单个实例并在多个 View 中更新该类的数据?

ios - 关于ScrollView与PageControl的几个问题

iphone - 将 Xcode 的目标设置为 iPhone 而不是 iPad

iphone - 从 Xcode 更改按钮文本?

ios - 应用程序加载器/Xcode 卡在 'Verifying Assets with the App Store"