-2

可能重复:
iOS - 将变量传递给视图控制器

我有两个 Viewcontrollers(ViewController1 和 ViewController2),我想将一个 String 值连同一个 IBAction 从 ViewController1 传递到 ViewController2。我正在尝试读取 ViewController2 的 ViewDidLoad 方法中的 NSString (*check) 值,但它返回一个空值。

帮助我并提前感谢。

// ViewController1

@interface ViewController1 : UIViewController {

        IBOutlet UIButton *btn1;
        IBOutlet UIButton *btn2;
        NSString *check;
    }
#import "ViewController.h"

-(IBAction)buttonClicked:(id)sender {

    check = [[NSString alloc] init];

    if (btn1.tag == 0) {
        check = @"foo";
        NSLog(@"%@",check);    
    }
    if (btn2.tag == 1) {
        check = @"bar";
        NSLog(@"%@",check);
    }
} 

在我的第二个视图控制器中,

#import <UIKit/UIKit.h>

@class ViewController1;

@interface ViewController2 : UIViewController {

    ViewController1 *viewCon;
}

@property(nonatomic,retain) ViewController *viewCon;

//.m

#import "ViewController2.h"
#import "ViewController1.h"

@synthesize viewCon,

 - (void)viewDidLoad
{
    ViewController *myVC = [[ViewController alloc] init];
    NSLog(@"  Label  %@",myVC.check);
    [super viewDidLoad];
}
4

3 回答 3

2

使用 ViewController2 的实例后跟点运算符将数据从 ViewController1 传递到 ViewController2:

在 ViewController2 中创建 NSString *strCheck 的属性,因为您想将数据传递给 ViewController2。

现在在 ViewController1 的按钮单击事件中

-(IBAction)buttonClicked:(id)sender {
{

 .......
 .......

 ViewController2 *objViewController2 = [ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
 objViewController2.strCheck = check; //ViewController1's value to ViewController2

}
于 2012-09-15T10:58:09.253 回答
2
-(IBAction)buttonClicked:(id)sender {

   //check = [[NSString alloc] init]; -- NO Need

    if (btn1.tag == 0) {
        check = @"foo";
        NSLog(@"%@",check);    
    }
    if (btn2.tag == 1) {
        check = @"bar";
        NSLog(@"%@",check);
    }

  ViewController2 *obj = [[ViewController2 alloc] initWithNibName:@"ViewController2"];
  [obj setCheck:check];
  //push to ViewController2
  [obj release];

}

在您的第二个视图控制器中,

#import <UIKit/UIKit.h>

@interface ViewController2 : UIViewController {

        NSString *check;
}
@property (nonatomic, retain) NSString *check;


//.m

#import "ViewController2.h"

@synthesize check;


 - (void)viewDidLoad
{
    NSLog(@"  Label  %@",check);
}
于 2012-09-15T11:08:22.007 回答
1

请参阅此链接 -
iOS - 将变量传递给视图控制器
我已经为同样的事情给出了答案。

您需要设置变量的@property@synthesized。有关更多信息,请查看链接。

于 2012-09-15T11:01:46.500 回答