从其他视图控制器访问变量



可能重复:
从另一个视图控制器与视图控制器交互

viewcontrollerOne.h

UILabel *label;

视图控制器两个.m

-(void)myMethod
{
 viewControllerOne *obj = [[viewControllerOne alloc]init];
 obj.label.text = @"abcd";
}

我想在另一个视图控制器中访问一个视图控件的变量。我尝试了上面的方法,但对我不起作用。我搜索了其他线程,但大多数答案都告诉我在appdelegate中声明它们。那么,除了在appdelegate中声明它之外,还有其他方法吗?

在viewcontrollerTwo中创建一个新方法(不要忘记在*.h文件中声明它(:

-(id) setParams:(UILabel *)lb{
   labelOne = [[UILabel alloc] init];
   labelOne = lb
   return self;
}

然后,当你需要把这个视图控制器从第一个:

    viewcontrollerTwo *controllerNew = [[viewcontrollerTwo alloc] initWithNibName:@"viewcontrollerTwo" bundle:nil];
    [self.navigationController pushViewController:controllerNew animated:YES];
    controllerNew = [controllerNew setParams:labelOne];
    [controllerNew release];

您的代码是错误的,您应该有labelOne,而不是label:

obj.labelOne.text = @"abcd";

此外,您的标签可能还不存在——您是在init函数中创建的吗?如果你有一个用于该控制器的xib文件,那么你需要加载它,以便创建并链接所有控件:

viewcontrollerOne *controllerNew = [[viewcontrollerOne alloc] initWithNibName:@"viewcontrollerOne" bundle:nil];

此外,将标签声明为属性而不是成员变量会更好:

@property (strong, nonatomic) UILabel *labelOne

然后综合实现文件中的setter/getter方法:

@synthesize labelOne;

最后,Cocoa命名标准是类名应该以大写字母开头。

查看它非常简单。。。你可以通过App Delegate类来完成。

在appDelegate类中编写所需的变量,如.h 中所示

UILabel *myLabel;
@property (nonatomic) UILabel *myLabel;

IN.m文件:-

synthsize myLabel;
myLabel = [[UILabel alloc]init];

现在,无论在哪个视图中,控制器都需要获得此标签,方法如下:-

in.h文件:-

@class AppDelegateClass; //forward decleration
AppDelegateClass *appDelegate;
UILabel *localLabel;     //CurrentViewController Label
//Make Property

in.m文件:-

//synthesize the Label
appDelegate = (AppDelegateClass *)[[UIApplication SharedApplication]delegate];
//now to acccess it
localLabel = appDelegate.myLabel;

和完成。。。

希望它能有所帮助,如果是,请勾选为正确答案,并对答案进行投票…:(

请尝试以下代码而不是您的代码。它会很好地工作。。。

viewControllerOne *obj = [viewControllerOne alloc];
obj.variableName = @"abcd";
[obj initWithNibName:@"nibName"];

感谢

最新更新