0

我在这里有一个类,它将字符串值传递给另一个具有 UILabel 的类并将其显示给该类。但是我不能将它显示到另一个类的标签上。我以两种方式做到了这一点..

1)我的第一种方式,直接从另一个类调用标签。在我的第一个类上,在方法上

static void on_status_state(NSString *) stats
{
     DisplayViewController* display = [[DisplayViewController alloc] init];
        display.statusLabel.text = @"Sample Display";
}

在包含 UILabel 的类上。在 DisplayConn.h

@property (retain, nonatomic) IBOutlet UILabel *statusLabel;

2)我的第二种方式,调用方法并将值传递给我的第一个类的参数,在方法上

static void on_status_state(NSString *) stats
{
  DisplayViewController* display = [[DisplayViewController alloc] autorelease];
        [display toReceiveStatus:@"Sample Label"];
}

在包含 UILabel 的类上。在 DisplayConn.h

@property (retain, nonatomic) IBOutlet UILabel *statusLabel;

然后在 DisplayConn.m

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void)toReceiveStatus:(NSString *) stats
{
    self.statusLabel.text = stats;
    NSLog(@"DISPLAY %@",stats); 
}

第二种方法似乎有效,因为显示了包含该值的日志,但是该值仍未显示到标签('statusLabel')。标签的显示会在运行时不时更改。应该是什么原因?

4

2 回答 2

1

考虑到这一点,

A类和B类

UILabel 属于 B 类

在 A 类中,

B *newObject = [B alloc]init];
newObject.statusLabelValue = @"Simple Display";

在你的 Bh

@property (retain, nonatomic) NSString *statusLabelValue;
@property (retain, nonatomic) IBOutlet UILabel *statusLabel;

在 Bm

- (void)viewDidLoad
{
[super viewDidLoad];
statusLabel.text = statusLabelValue;
}
于 2012-07-12T04:38:03.127 回答
0

你应该初始化 DisplayViewController类的对象,

 static void on_status_state(NSString *) stats
{
        DisplayViewController* display = [[[DisplayViewController alloc]  init] autorelease];
        [display toReceiveStatus:@"Sample Label"];
}

你应该检查是否- (void)toReceiveStatus:被调用。在 DisplayConn.h 中声明 statusLabel 为UILabel *statusLabel;

试试这样我认为它会对你有所帮助。

- (void)viewDidLoad
{
    statusLabel  = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 30, 20)];
    statusLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];
    statusLabel.font = [UIFont systemFontOfSize:15.0];
    [self.view addSubview:statusLabel];

}
于 2012-07-12T04:50:12.783 回答