我正在阅读几年前编写的Objective-C书籍,并且我到了他们教授如何使用界面构建器来链接和设计UI的部分。现在相当于它的“故事板”。我遵循IB的说明并将它们翻译成故事板,它似乎在大多数情况下都有效。但是,我没有让我的实例变量UILabel显示在屏幕上。所有按钮和标签都是在故事板中创建的,而不是以编程方式创建的。任何帮助将不胜感激!
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
答案 0 :(得分:1)
我将猜测并假设您的UILabel正确显示在屏幕上,但它不会显示您在调用setText:方法时所做的更改。
如果是这种情况,则表示您的IBOutlet(可能还有您的IBActions)未正确连接。
首先需要确保将IB中的UIViewController类设置为“ViewController”:
然后,您可以通过选择它们将按钮连接到IBActions,将标签连接到IBOutlet,然后按Ctrl +拖动到View Controller:
然后,您应该获得一个包含符合条件的IBOutlets和IBActions列表的弹出窗口(取决于您拖动的位置),这只是选择正确的一个。
答案 1 :(得分:0)
故事板从iOS 5.0开始工作。当然,它不适用于早期版本的iOS。并且错误不会在编译期间发生,而是在模拟器/设备上运行
当然,您还没有发布使用
的sdk版本