Как установить текст UILabel из другого класса - PullRequest
0 голосов
/ 14 декабря 2011

У меня проблема с UILabel.Вот два файла ViewController и MainClass, во-первых, это контроллер для файла пера с выходом label1.Второй файл - это класс с другой меткой mainLabel, которая содержит текст («Установить из метода init в MainClass»).Я хочу установить mainLabel в label1 в ViewController.

В init методе MainClass. Я устанавливаю текст для 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, у меня есть вид с label1 без текста в моем симуляторе iPhone.// 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 ]

1 голос
/ 14 декабря 2011

Почему бы вам не сделать это 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
0 голосов
/ 14 декабря 2011

Я думаю, что если вы хотите передать это string [в вашем коде это mainLabel.text] с одного контроллера на другой, тогда вы можете использовать UISharedApplication .. перейдите по этой ссылке .... https://stackoverflow.com/questions/8486540/i-want-to-pass-data-from-one-view-controller-to-another-controller/8487095#8487095

...