0

我正在关注几年前写的一本 Objective-C 书,我到了他们教如何使用界面构建器链接和设计 UI 的部分。现在,与之等效的似乎是“故事板”。我按照 IB 的说明将它们翻译成故事板,它似乎大部分都奏效了。但是,我没有让我的实例变量 UILabel 显示在屏幕上。所有按钮和标签都是在情节提要中创建的,而不是通过编程方式创建的。任何帮助,将不胜感激!

视图控制器.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

视图控制器.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
4

2 回答 2

1

我将猜测并假设您的 UILabel 正确显示在屏幕上,但它不会显示您在调用 setText: 方法时所做的更改。

如果是这种情况,则意味着您的 IBOutlet(可能还有您的 IBActions)没有正确连接。

您需要首先确保将 IB 中的 UIViewController 的类设置为“ViewController”:

将自定义类设置为 ViewController

然后,您可以将按钮连接到您的 IBActions,并通过选择它们将您的标签连接到您的 IBOutlet,然后 Ctrl+拖动到您的视图控制器:

Ctrl+拖动到您的视图控制器

然后,您应该会得到一个弹出窗口,其中包含符合条件的 IBOutlets 和 IBActions 列表(取决于您从哪里拖动),这只是选择正确的问题。

于 2013-05-08T06:45:57.327 回答
0

Storyboard 从 iOS 5.0 开始工作。当然,它不适用于早期版本的 iOS。并且错误可能不是在编译期间发生,而是在模拟器/设备上运行时发生

当然,您还没有发布您使用的 sdk 版本

于 2013-05-08T06:16:37.493 回答