标签结果在另一个Viewcontroller中

时间:2012-11-26 13:46:43

标签: objective-c ios

早安男士,

我有问题。我有一个应用程序进行计算。如果我在同一个ViewController中插入Label,我会全部观看。

如何在另一个视图中插入相同的标签?

这是有计算的视图。

小时。

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (strong, nonatomic) IBOutlet UITextField *textField1;
@property (strong, nonatomic) IBOutlet UITextField *textField2;

@property (strong, nonatomic) IBOutlet UIButton *result;

@property (strong, nonatomic) IBOutlet UIDatePicker *data;


@end

微米。

//
//  ViewController.m
//  IEcigarette
//
//  Created by Federico on 24/11/12.
//  Copyright (c) 2012 Federico. All rights reserved.
//

#import "ViewController.h"
#import "ResultViewController.h"



@interface ViewController ()
@property (strong, nonatomic) NSString * myString;

@property (strong, nonatomic) UILabel * myLabel;
@end

@implementation ViewController

-(IBAction)calculate:(id)sender{



    NSDate *past = _data.date ;
    NSDate *now = [NSDate date];

    NSCalendar *gregorianCalendar = [[NSCalendar alloc]
                                     initWithCalendarIdentifier:NSGregorianCalendar];
    NSUInteger unitFlags = NSDayCalendarUnit;
    NSDateComponents *components = [gregorianCalendar components:unitFlags
                                                        fromDate:past
                                                          toDate:now
                                                        options:0];
    int z = [components day];
    int a = ([_textField1.text intValue]);
    int b = a*([_textField2.text intValue]);

    int r = b * z / 20;

    _myLabel.text = [[NSString alloc] initWithFormat:@"%d", r];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (BOOL)textFieldShouldReturn:(UILabel *)myLabel {

    [myLabel resignFirstResponder];

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        [self performSegueWithIdentifier:@"detail" sender:self];
    }

    return YES;
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"detail"]) {

        ResultViewController* destVC = (ResultViewController*)segue.destinationViewController;

        destVC.myString = self.myLabel.text;
        destVC.navigationItem.title = self.myLabel.text;

    }
}

@end

谢谢

2 个答案:

答案 0 :(得分:2)

为什么要尝试将同一标签插入另一个视图。只需将label.text(string)传递给另一个视图控制器的字符串即可。然后使用该字符串并在viewdidload方法中使用此字符串创建新标签。您也可以使用nsuserdefaults传递值。

答案 1 :(得分:0)

可以在共享和

中保持对它的引用
[yourLabel removeFromSuperview];
[yourViewController.view addSubview:yourLabel];

对于要在其上显示的每个视图控制器。

但是,如果您共享的内容几乎与UILabel一样,我建议为每个视图控制器使用单独的UILabel实例,并在视图之间共享.text值。您可以传递prepareForSegue中的值,将其保存到NSUserDefaults,将其设置为某个共享对象/单例的属性。