0

我有点坚持尝试将数据从一个视图控制器上的两个 UITextfields 传递到另一个视图控制器。基本上我得到了以下项目:

视图控制器.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {

    IBOutlet UITextfield *Textfield1;
    IBOutlet UITextfield *Textfield2;
}

-(IBAction)GoNextView:(id)sender;

@end

视图控制器.m

@interface ViewController ()

@end

@implementation ViewController

(IBAction)GoNextView:(id)sender {

    SecondView *second = [[SecondView alloc] initWithNibName:nil bundle:nil];

    [self presentViewController:second animated:YES completion:NULL];  
}

- (void)viewDidLoad {
     [super viewDidLoad];
}

第二视图.h

#import <UIKit/UIKit.h>

@interface SecondView : UIViewController {

    IBOutlet UILabel *ShowTextfield1;
    IBOutlet UILabel *ShowTextfield2;
}

-(IBAction)GoBack:(id)sender;

@end

第二视图.m

@interface SecondView ()

@end

@implementation SecondView

- (IBAction)GoBack:(id)sender {

    [self dismissViewControllerAnimated:YES completion:NULL];
}

我想要的是,当GoNextView按下按钮时,它应该将数据传递UITextfieldSecondView. 然后转到下一页。数据现在应该显示在SecondView. 我已经为此苦苦挣扎了好几个小时,这让我很生气。我知道我必须使用一些NSStringand @property(nonatomic, retain) NSString *asdas。但我根本无法让它工作。那么基于上面的代码我如何将数据从两个传递UITextfield到下一个视图的两个标签?

4

2 回答 2

0

不要通过函数导航到第二个视图,而是使用 Storyboard Segues。创建一个故事板应用程序。要创建 segue,您需要一个导航视图控制器。您可以通过以下步骤来做到这一点。

  1. 选择第一个视图控制器并转到编辑器 -> 嵌入 -> 导航控制器。
  2. 然后Ctrl+单击“GoNextView”按钮,拖放到SecondView中。
  3. 您将获得三个选项:推送、模型、自定义。点击 push 然后在这两个视图之间创建一个 segue。
  4. 单击该segue,然后单击右侧属性窗口中的“显示属性检查器”。现在将其命名为“连接器”或您喜欢的任何名称。

现在,在 SecondView.h 创建两个字符串,

@property (nonatomic, retain) NSString *str1;
@property (nonatomic, retain) NSString *str2;

并在 SecondView.m 中合成它们。

让我们将您的 UITextFields 命名为 ViewController 中的“text1”和“text2”。转到 ViewController.h 并添加#import "SecondView.h"

在 ViewController.m 中执行以下操作,

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"connector"])
    {
        ViewController *VC = [segue destinationViewController];

        VC.str1 = text1.text;
        VC.str2 = text2.text;
    }
}

现在您可以在您的 SecondView 中显示这些字符串。在 Secondview.m 中,

标签.文本 = str1;

它会被显示出来。

于 2013-01-02T23:39:35.407 回答
0

使用 NSUserDefaults 或普通的合成通用接口变量。例如,

  1. NSUserDefaults 来自发送者的视图控制器,

    NSString *text=textField1.text; NSUserDefaults *prefs=[NSUserDefaults standardUserDefaults]; [prefs setObject:text forKey:@"text1value"];

你可以从任何视图控制器获取值,

NSUserDefaults *prefs=[NSUserDefaults standardUserDefaults];
NSString *received string= [prefs stringForKey:@"text1value"];
  1. 普通的分配者,

我相信您必须使用 performegue 来导航视图控制器。有一个名为“prepareforsegue”的委托方法,您可以将文本字段值分配给接口变量。例如,

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"seguename"]) {
        destViewController *destViewController = segue.destinationViewController;
        destViewController.name = @"some text";
    }
}

在接收者的视图控制器中,getter 变量实际上定义为,

在 .h 文件中,@property(nonatomic, strong) NSString *name;

在 .m 文件中,不要忘记在实现后合成变量

@implementation destViewController
@synthesize name;

希望能帮助到你!

于 2016-01-23T12:12:10.763 回答