如何从另一个类设置UILabel文本

时间:2011-12-14 06:56:54

标签: iphone ios uikit uilabel

我对UILabel有疑问。这是两个文件ViewControllerMainClass 首先是具有label1插座的nib文件的控制器。第二个文件是一个具有另一个标签mainLabel的类,其中包含文本(“从MainClass中的init方法设置”)。我希望在mainLabel中将label1设置为ViewController

在MainClass的init方法中,我为mainLabel.text

设置了文字
mainLabel.text = @"Set from init method in MainClass";

然后我打电话给NSLog(@"%@",mainLabel.text);,但在控制台我有空

2011-12-14 10:31:31.048 ClassTask[1076:f803] (null)

然后我在label1 = newClass.mainLabel;中拨打- (void)viewDidLoad我在我的iPhone模拟器中查看label1没有文字。 // ViewController.h

#import <UIKit/UIKit.h>
#import "MainClass.h"
@interface ViewController : UIViewController {
    UILabel *label1;    
    MainClass *newClass;
}
@property (nonatomic, retain) IBOutlet UILabel *testLabel;
@end

// ViewController.m

#import "ViewController.h"
@implementation ViewController
@synthesize label1;
-(void) dealloc{
    [label1 release];
    [super dealloc];
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
    [super viewDidLoad];
    newClass = [MainClass new];
    label1 = newClass.mainLabel;
}
@end

// MainClass.h

#import <UIKit/UIKit.h>
@interface MainClass : NSObject {
    UILabel *mainLabel;
}
@property (nonatomic, retain) IBOutlet UILabel *mainLabel;
@end

// MainClass.m

#import "MainClass.h" @implementation MainClass @synthesize mainLabel;
-(id) init {
    if (self = [super init]) {
        mainLabel.text = @"Set from init method in MainClass";
        NSLog(@"%@",mainLabel.text);
    }
    return self; }
-(void)dealloc {
    [mainLabel release];
    [super dealloc]; 
} 
@end

2 个答案:

答案 0 :(得分:1)

为什么不将它设为NSString,它基本上是您想要在另一个ViewController中访问的文本。

我发现的另一个错误

#import "ViewController.h"
@implementation ViewController
@synthesize label1;
-(void) dealloc{
    [label1 release];
    [super dealloc];
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
    [super viewDidLoad];
    newClass = [MainClass new];
    **label1 = newClass.mainLabel.Text;  // its a label, so whenever you retrieve its value it would be like labelName.Text**
}
@end

答案 1 :(得分:0)

我想如果您想将string [在您的代码中将mainLabel.text]从一个控制器传递到另一个控制器,那么您可以使用UISharedApplication ..请点击此链接.... { {3}}