将标签数据从一个视图控制器传递到另一个视图控制器

时间:2013-07-26 11:39:28

标签: iphone ios objective-c

在我的第一个视图控制器中,标签显示用户输入的等式的答案。当用户转到下一个视图控制器时,我希望第二个视图控制器中的标签具有与第一个视图控制器中收到的数据相同的数据。我在互联网上阅读了很多关于通过的数据文章和问题(包括SO)。没有人似乎属于我的问题。

例如,我的第一个视图控制器中有2个文本字段和一个标签。如果用户在两个字段中输入数字2,则标签将显示4作为答案。然后,当用户进入下一个深度解释答案的视图控制器时,我希望标签中显示的答案可用。

编辑:我会根据我的项目提出这个问题,以便我能更好地理解它。我非常感谢所有回复!

在我的第一个名为“View Controller”的视图控制器中,用户计算出他们的BMI,该BMI显示在一个名为“bmiView”的标签中。

在我的第二个视图控制器(TipsViewController)中,它显示了用户的分类。例如,如果在用户计算的第一个视图控制器的BMI为30.00时,它们被归类为“Obese”,我想在第二个视图控制器中显示它。

7 个答案:

答案 0 :(得分:1)

FirstViewController 中假设您有UILabel *myLabel

myLabel.text =@"Hari kishan ";

<强> SecondviewController 并且你在第二个视图控制器中有另一个标签。

@property(nonatomic, retain)NSString *secondLabel;
@property(nonatomic, retain)NSString *secondLabelText; //a string to contain text for that Label

//To set text of secondLabel as mylabel 
//do this in **FirstViewController.m**

SecondvViewController *objSecondviewController =[[SecondviewController alloc]init];
objSecondviewController.secondLabelText=myLabel.text;
[self.navigationController pushViewController:objSecondviewController animated:YES];

现在在 SecondvViewController.m

self.secondLabel.text=secondLabelText;

答案 1 :(得分:0)

<强> FirstController

-(void)calculateAnswer{
    int answer=[self.firstInput.text intValue] + self.secondInput.text intValue];

    SecondController *controller=[[SecondController alloc] initWithNibName:@"SecondView" bundle:nil];
    //Answer is a PUBLIC property declared in SecondController
    controller.answer=[NSString stringWithFormat:@"%d",answer];
    [self.navigationController pushViewController:controller animated:YES];
}

<强> SecondController

在SecondController.h中

@property(nonatomic, retain)NSString *answer;

在SecondController.m

-(void)viewDidLoad{
  [super viewDidLoad];

  self.lblAnswer.text=self.answer;
}

答案 2 :(得分:0)

在视图控制器2中创建字符串

的属性
@property (nonatomic, strong) NSString * resultValue;

在viewdidLoad中

[self.textfieldOutlet setText:self.resultValue];

初始化第二视图控制器时

Viewcontroller2 *val=[Viewcontroller2 alloc ]init];
val.resultValue = self.resulttextFieldoutletinVC1.text;

push / modal viewcontroller

所以只需在字符串中传递值,然后在第二个视图控制器中获取值并对其执行任何逻辑

答案 3 :(得分:0)

您可以在secondView

中创建字符串的属性
#import <UIKit/UIKit.h>

@interface SecondViewController : UIViewController {
}
@property (nonatomic, strong) NSString *strResultedText;
@end

比推送或展示之前可以将标签的值从第一个视图传递到第二个视图。您可以使用SecondView的对象访问该属性,如:

SecondViewController *obj = //your initialization
obj.strResultedText = lbl.text;

答案 4 :(得分:0)

步骤:

1)在Next View Controller中创建名为final的属性:

@property(nonatomic, strong) NSString *final;

2)计算总和:

int firstVal = [yourFirstTextField.text intValue];
int secondVal = [yourSecondTextField.text intValue];
int resultVal = firstVal + secondVal;
NSString *final = [NSString stringWithFormat:@"%d",resultVal];

3)将其发送到下一个视图控制器:

NextViewController *navController = [[NextViewController alloc] initWithNibName:@"NextViewController" bundle:nil];
nextViewObj.final = final;
[self.navigationController pushViewController:navController animated:YES];

4)在下一个视图控制器中:

yourLabel.text = self.final;

答案 5 :(得分:0)

NSString中创建一个名为labelText的{​​{1}},并将SecondViewController.h中的标签名称设为FirstViewController,然后在“FirstViewController”中执行此操作:

myLabel

答案 6 :(得分:0)

您可以使用NSUserDefaults。 在第一个视图控制器中,如果您的标签值已更改,则可以保存值:

[[NSUserDefaults standardUserDefaults] setObject: label.text
                                          forKey: @"lableValue"];

在第二个视图控制器中:

- (void) viewDidAppear: (BOOL) animated
{
     label.text = [[NSUserDefaults standardUserDefaults] stringForKey: @"lableValue"];
}