2012-03-16 135 views
0

我在嘗試構建一個通過代碼動態設置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等於各種值,但是當我通過代碼設置值時什麼也沒有顯示。

如果有人能幫我解決這個問題,我會非常感激。

+0

'firstNumberString'是屬性嗎?伊娃?你在做這個班的其他任何東西嗎? – MishieMoo 2012-03-16 20:10:37

+0

您是否定義了NSString * firstNumberString = ...?或者它是你的代碼中的一個特權?和firstNumberLabel。你是如何合成它的? (有或沒有_或類似的東西)? – Canopus 2012-03-16 20:12:31

+0

firstNumberString是一個NSString,我聲明屬性爲(nonatomic,copy),這就是我在應用程序中所做的工作,它使它正常工作。我所做的就是使用它來設置標籤中出現的內容。 – 2012-03-16 21:01:30

回答

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]; 
} 

此外,如果你想從另一個按鈕關閉該文本字段spefically,而不僅僅是一個屏幕上輕點。然後在按鈕內調用它。

[your_textfield_name resignFirstResponder]; 
+0

我的標籤被宣佈爲屬性。所以這不是問題。 (我添加了另一條評論,上面有更多的信息。) – 2012-03-17 00:16:10

+0

我確實有編碼,所以用戶可以按下完成,但我也希望能夠在用戶點擊視圖的另一部分時關閉鍵盤。這並不是絕對必要的,但這是我認爲ios用戶在有數字鍵盤時所期待的額外便利。 – 2012-03-17 02:50:18

+0

檢查編輯。如果你遵循它,你應該能夠忽略文本字段而不管你想要什麼。 – Vikings 2012-03-17 02:59:19