我正在尝试构建一个通过代码动态设置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设置为等于所有类型的值,但是当我通过代码设置值时没有显示任何内容。
如果有人可以帮我解决这个问题,我真的很感激。答案 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];