动态设置UILabel的值

时间:2012-03-16 20:04:01

标签: iphone uilabel

我正在尝试构建一个通过代码动态设置UILabel值的测验。 我以前成功完成了这项工作,但由于某种原因,这次没有成功。我怀疑这是因为这个应用程序的结构是不同的。我尝试了不同的修复方法但未能使其正常工作。

我的应用程序的设置方式,我有一个视图控制器,其视图具有分段控件。当您按下分段控件上的其中一个开关时,它会插入如下子视图:

menuTable.hidden = YES;
additionPracticeController *additionPractice = [[additionPracticeController alloc]
                                                         initWithNibName:@"additionPractice"
                                                         bundle:nil];
    self.addPracticeController = additionPractice;
    [self.view insertSubview:additionPractice.view atIndex:0];
    [additionPractice release];

该子视图的视图控制器显示如下视图:

- (void)viewWillAppear:(BOOL)animated{

firstNumberString = [NSString stringWithFormat:@"%d",arc4random() % 10];
firstNumberLabel.text = firstNumberString;
secondNumberLabel.text = secondNumberString;
[super viewWillAppear:animated]}

我的网点已连接,我可以通过从笔尖静态设置它们来获取值(即使这不是我想要的)。我试图将firstNumberString设置为等于所有类型的值,但是当我通过代码设置值时没有显示任何内容。

如果有人可以帮我解决这个问题,我真的很感激。

1 个答案:

答案 0 :(得分:0)

听起来你在Interface Builder中连接了标签。我需要看到更多的代码来确切地知道你做错了什么。确保您使用属性作为标签。下面的代码是一个如何工作的简单示例。

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
    IBOutlet UILabel *_displayMessage;
}

@property (nonatomic, retain) UILabel *displayMessage;

@end

ViewController.m

#import "ViewController.h"

@implementation ViewController

@synthesize displayMessage = _displayMessage;

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.displayMessage.text = @"Text Changed!";
}

- (void)viewDidUnload
{
    self.displayMessage = nil;
    [super viewDidUnload];
}

- (void)dealloc
{
    [_displayMessage release];
    [super dealloc];
}

@end

不要让你的类成为UIControl的子类,而是在下面实现这个方法。当用户点击完成或返回时,键盘将辞职

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{
    [textField resignFirstResponder];
    return YES;
}

当用户点击文本字段之外时,使文本字段关闭。

将其放在ViewDidLoad中:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self
                                                                      action:@selector(dismissKeyboard)];

[self.view addGestureRecognizer:tap];

将此方法放在类中:

-(void)dismissKeyboard 
{
       [aTextField resignFirstResponder];
}

此外,如果您想要从另一个按钮中删除文本字段,而不仅仅是屏幕点击。然后从按钮内调用它。

[your_textfield_name resignFirstResponder];