iOS:在 ViewController 类型的对象上找不到属性

3

我正在尝试将浮点值设置到另一个视图控制器NewLinkViewController中。

以下是我的代码:

    - (IBAction)selectSize:(id)sender {
UIButton *selectSize = (UIButton *) sender;
sizeChosen = [[[selectSize titleLabel] text] floatValue];
[self dismissViewControllerAnimated:YES completion:^{
    [mainController setMySizeLabel:sizeChosen];
    [NewLinkViewController.sizeChosen = sizeChosen];

}];

我遇到了这个错误:http://puu.sh/7WSA9.png (显示“NewLinkViewController对象上没有找到'sizeChosen'属性”)

我在NewLinkViewController.h中明确地定义了@property,如下所示:

    @property float sizeChosen;

我做错了什么?


2
你正在尝试设置的属性,而你应该在NewLinkViewController实例上设置它。你可能需要将该实例传递到执行“选择”操作的视图控制器中。(除非你真的使用大写字母命名了实例变量,在这种情况下我是错误的。) - Craig Otis
尝试使用:@property (nonatomic, assign) CGFloat sizeChosen; - klcjr89
4个回答

6

看起来你是在类上设置属性,而不是类的对象 [NewLinkViewController.sizeChosen = sizeChosen];

此外,如果你使用点语法,就不需要方括号了。


1

像这样声明您的属性:

@property (nonatomic, assign) float sizeChosen;

并设置您的sizeChosen属性如下所示。
  - (IBAction)selectSize:(id)sender {
      UIButton *selectSize = (UIButton *) sender;
      sizeChosen1 = [[[selectSize titleLabel] text] floatValue];
      [self dismissViewControllerAnimated:YES completion:^{
        [mainController setMySizeLabel:sizeChosen1];
        newLinkViewController.sizeChosen = sizeChosen1;//newLinkViewController should be the instance of NewLinkViewController 

     }];

1
您需要使用类NewLinkViewController的实例来访问浮点变量属性,如rounak所建议的那样,在访问属性方法时无需使用方括号。 以下是使用方式:
  NewLinkViewController *newLinkVw=[[NewLinkViewController alloc] initWithNibName:@"yourVwNibnm" bundle:nil];
 //now access your property
   newLinkVw.sizeChosen=sizeChosen;

注意:在设置或访问类的属性之前,请确保存在该类实例。

0
你可以试试这个。
- (IBAction)selectSize:(id)sender {
UIButton *selectSize = (UIButton *) sender;
sizeChosen = [[[selectSize titleLabel] text] floatValue];
[self dismissViewControllerAnimated:YES completion:^{
    [mainController setMySizeLabel:sizeChosen];
    NewLinkViewController *newLinkController = [[NewLinkViewController alloc] init];
    newLinkController.sizeChosen = sizeChosen;

}];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接