UILabel不显示任何消息

时间:2014-05-19 14:42:21

标签: ios objective-c

图片第一~~

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
    IBOutlet UILabel *textview;
}


- (IBAction)randomWords:(id)sender;


@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController


-(IBAction)randomWords:(id)sender {
    int ran = arc4random() % 6;
    switch (ran) {
        case 0:
            textview.text = @"Cat";
            break;
        case 1:
            textview.text = @"Dog";
            break;
        case 2:
            textview.text = @"Fish";
            break;
        case 3:
            textview.text = @"Horse";
            break;
        case 4:
            textview.text = @"Bird";
            break;
        case 5:
            textview.text = @"Test";
            break; 
        default:
            break;
    }
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

我放的标签框没有显示任何信息。 有什么问题或者我离开了什么吗?

标签的自定义类是带有StoryBoard Hello的UIControllerView。 任何人都可以帮助我,所以当他们重定向到应用程序时,它会随机生成一条消息。

enter image description here

3 个答案:

答案 0 :(得分:2)

所以使用此代码进行测试:

  -(IBAction)randomWords:(id)sender {
    dispatch_async ( dispatch_get_global_queue ( DISPATCH_QUEUE_PRIORITY_BACKGROUND ,  0 ),  ^{

           int ran = arc4random() % 6;

        dispatch_async ( dispatch_get_main_queue (),  ^ {

        switch (ran) {
            case 0:
                textview.text = @"Cat";
                break;
            case 1:
                textview.text = @"Dog";
                break;
            case 2:
                textview.text = @"Fish";
                break;
            case 3:
                textview.text = @"Horse";
                break;
            case 4:
                textview.text = @"Bird";
                break;
            case 5:
                textview.text = @"test";
                break; 
            default:
    textview.text = @"Said";
                break;
        }



        });
    });


    }

答案 1 :(得分:1)

我真的不知道textview如何添加到主视图中。如果通过Storyboard,你应该这样做

@property (nonatomic, weak) UBOutlet UILabel *textview;

然后将此出口链接到您的Storyboard标签,以便使用此属性。 第二种解决方案是使用viewDidLoad方法创建标签,如下所示:

-(void)viewDidLoad
{
 [super viewDidLoad];

 textview = [[UILabel alloc]initWithFrame:CGRectMake(5,5,self.view.frame.size.width -10,100)];
 textview.numberOfLines = 10;

 [self.view addSubview:textview];
}

目前您的参考文献没有指向屏幕上的对象。 希望这可以帮助您理解为什么您的标签不显示您的文字。

答案 2 :(得分:0)

可能是您的代码与故事板之间的部分或全部连接未被连接起来。

在viewcontroller.h中,最好像这样引用你的标签:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UILabel * textview;

@end

您需要将该标签与故事板相关联,并且您可以通过检查@property ...行左侧的圆圈是否已填写来判断是否存在。

对于“randomWords”按钮, - (IBAction)语句左侧还有一个圆圈。如果没有填写,您需要将该按钮的“touch up inside”事件连接到该方法。

最后,您还可以尝试

arc4random_uniform(6) 

作为一种保证从随机数生成器获得整数的方法。