0

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

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

编辑:我将把它放在我的项目中,以便我能更好地理解它。我真的很感谢所有的回复!

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

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

4

7 回答 7

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;
于 2013-07-26T11:50:55.403 回答
0

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

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

在第二个视图控制器中:

- (void) viewDidAppear: (BOOL) animated
{
     label.text = [[NSUserDefaults standardUserDefaults] stringForKey: @"lableValue"];
}
于 2013-07-26T11:50:38.883 回答
0

第一控制器

-(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.h 中

@property(nonatomic, retain)NSString *answer;

在 SecondController.m 中

-(void)viewDidLoad{
  [super viewDidLoad];

  self.lblAnswer.text=self.answer;
}
于 2013-07-26T11:45:23.023 回答
0

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

@property (nonatomic, strong) NSString * resultValue;

在 viewdidLoad

[self.textfieldOutlet setText:self.resultValue];

初始化第二个视图控制器时

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

推送/模态视图控制器

所以只需在字符串中传递值,您就可以在第二个视图控制器中获得该值并对其执行任何逻辑

于 2013-07-26T11:45:33.333 回答
0

您可以在 secondView 中创建字符串的属性

#import <UIKit/UIKit.h>

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

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

SecondViewController *obj = //your initialization
obj.strResultedText = lbl.text;
于 2013-07-26T11:46:20.340 回答
0

脚步 :

final1)创建在 Next View Controller 中调用的属性:

@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;
于 2013-07-26T11:47:20.170 回答
0

在您的名称中创建一个NSString名称并让您的标签名称成为然后在您的 'FirstViewController' 中执行此操作:labelTextSecondViewController.hFirstViewControllermyLabel

SecondViewController *view = [[SecondViewController alloc] init];
view.labelText = myLabel.text;
于 2013-07-26T11:49:18.660 回答