2013-05-08 91 views
0

我正在關注幾年前編寫的一本Objective-C書籍,並且我學習瞭如何使用界面構建器來鏈接和設計UI的部分。現在看起來相當於「故事板」。我遵循IB的指示並將它們翻譯成故事板,而且似乎大部分工作。但是,我沒有讓我的實例變量UILabel顯示在屏幕上。所有的按鈕和標籤都是在故事板中創建的,而不是以編程方式創建的。任何幫助,將不勝感激!舊的iPhone SDK代碼不起作用?

ViewController.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController { 

    IBOutlet UILabel *randNumber; //instance variable 

} 

-(IBAction)seed:(id)sender; 
-(IBAction)generate:(id)sender; 

@property (retain,nonatomic) UILabel *randNumber; //getter and setter methods 

@end 

ViewController.m

@interface ViewController() 

@end 

@implementation ViewController 
@synthesize randNumber; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

} 

-(IBAction)seed:(id)sender 
{ 
    srandom(time(NULL)); 
    [randNumber setText:@"Generator seeded."]; 

} 

-(IBAction)generate:(id)sender 
{ 
    //generate a random number between 0 and 100 inclusive 
    int generated; 
    generated = (random()%101); 
    [randNumber setText:[NSString stringWithFormat:@"%i",generated]]; 
} 



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

@end 
+2

你仍然可以使用沒有故事板的IB。 – sosborn 2013-05-08 05:08:34

+0

所以有效的不是代碼不工作,但IB已經改變了,對吧? – 2013-05-08 05:15:18

+0

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1 – CRDave 2013-05-08 05:16:24

回答

0

故事板從作品的iOS 5.0開始。當然,它不適用於早期版本的iOS。並且可以在編譯過程中,但在一個模擬器/設備

當然,你還沒有發佈SDK版本使用

1

我將採取猜測和假設上運行不會出現錯誤您的UILabel正確顯示在屏幕上,但不會顯示您在調用setText:方法時所做的更改。

如果是這種情況,那麼這意味着您的IBOutlet(可能還有您的IBActions)沒有正確連接。

您需要首先確保您設置類的UIViewController的IB到「視圖控制器」:

Set the Custom Class to ViewController

然後你就可以在你的按鈕連線到你的IBActions,你的標籤,你的

Ctrl+drag to your View Controller

您應該然後得到一個彈出有資格IBOutlets,IBAction爲你的清單:通過選擇它們,然後按Ctrl +拖動到您的視圖控制器IBOutlet中(取決於你從哪裏拖出),這只是選擇正確的問題。