0

当一本初学者书籍在第三章中出现与源代码相关的错误时,这绝不是一个好兆头,但在这里我是从 Apress 开始 iOS 6 开发。我们正在开发一个简单的项目,它提供两个按钮并根据被按下按钮的名称更改标签。

这本书最初的要求是使用statusLabel.text = plainText;,但失败了。

这之前在另一个线程上讨论过,所以我将其修改为self.statusLabel.text = plainText;,但这并没有解决我的问题。

这是我的代码:

#import "BIDViewController.h"

@implementation BIDViewController

- (IBAction)buttonPressed:(UIButton *)sender {

    NSString *title = [sender titleForState:UIControlStateNormal];
    NSString *plainText = [NSString stringWithFormat:@" %@button pressed.", title];
    self.statusLabel.text = plainText;

} 

@end

引发的错误如下:在对象'UIView *'上找不到属性'text'

我猜这是愚蠢的,但我会很感激你能给我的任何帮助。

4

1 回答 1

6

错误写得很清楚,

在对象“UIView *”上找不到属性“文本”

这意味着您可能将 statusLabel 声明为 UIView。就像是:

@property (weak, nonatomic) IBOutlet UIView *statusLabel;

当它应该被声明为 UILabel 时:

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

重要的是要记住,即使UILabel确实继承自UIView,这并不意味着它们共享所有相同的属性/方法。在这种情况下, 的UILabel子类UIView声明了其超类 ( )@property(nonatomic, copy) NSString *text;中不存在的属性。UIView

于 2013-05-09T04:43:33.627 回答