iOS - 将变量传递给视图控制器

Gra*_*t J 2 iphone uiviewcontroller ios

我有一个视图控制器的视图,当我在屏幕上显示这个视图时,我希望能够从调用类传递变量,以便我可以设置标签的值等.

首先,我只是尝试为其中一个标签创建一个属性,并从调用类中调用它.例如:

SetTeamsViewController *vc = [[SetTeamsViewController alloc] init];
vc.myLabel.text = self.teamCount;
[self presentModalViewController:vc animated:YES];
[vc release];
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.所以我尝试创建一个便利初始化器.

SetTeamsViewController *vc = [[SetTeamsViewController alloc] initWithTeamCount:self.teamCount];
Run Code Online (Sandbox Code Playgroud)

然后在SetTeamsViewController我有

- (id)initWithTeamCount:(int)teamCount {
    self = [super initWithNibName:nil bundle:nil];
    if (self) {
        // Custom initialization
        self.teamCountLabel.text = [NSString stringWithFormat:@"%d",teamCount];
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

但是,这也不起作用.它只是加载我在nib文件中给出标签的任何值.我用NSLog()s 代码乱码,它传递的是正确的变量值,它只是没有设置标签.

任何帮助将不胜感激.

编辑:我刚刚尝试在我的指定初始化程序中设置一个实例变量,然后在viewDidLoad中设置标签,这是有效的!这是最好的方法吗?

此外,当关闭此模态视图控制器时,我也会在调用ViewController的视图中更新按钮的文本.但是,如果我再次按下此按钮(再次显示模态视图),而另一个视图在屏幕上显示动画,则该按钮暂时再次显示其原始值(来自笔尖).有人知道为什么吗?

Sta*_*ash 6

初始化视图控制器时,在initWithNibName方法中,驻留在视图控制器中的视图尚未初始化,您还无法设置其属性.根据"viewDidLoad"方法做任何你需要的视图.


sup*_*kuN 6

我不是专业人士,但这可能对你有帮助.

在标题中view1.h,声明所需的属性:

// view1.h

@interface view1 : UIViewController {
    NSString *passingVariable;
}

@property (nonatomic, strong) NSString *passingVariable;

@end
Run Code Online (Sandbox Code Playgroud)

然后在执行中view1,合成变量:

// view1.m

@implementation view1

@synthesize passingVariable;

// the rest of the implementation

@end
Run Code Online (Sandbox Code Playgroud)

最后,在其他视图控制器的实现中,view2:

// view2.m

#import "view1.h"

@implementation view2

-(IBAction)changeview
{
    view1 *myview = [[view1 alloc] init];

    myview.passingVariable = @"Hello Variable";

    [self.navigationController pushViewController:myview animated:YES];
}

@end
Run Code Online (Sandbox Code Playgroud)

在这里我试图从view2视图1 移动并初始化passVariable ivar view1.希望这会帮助你.