不能在其他文件中使用类的方法

时间:2012-11-18 16:56:03

标签: iphone objective-c xcode cocoa

我无法使用我在tableview控制器实现中的tableviewcell文件中实现的方法之一。我尝试搜索网络和xcode帮助没有运气。我的代码如下:

TableViewController.h:

    #import TableViewCell.h

    @interface TableViewController : UITableViewController


    @property (nonatomic, strong) IBOutlet UIBarButtonItem *A1Buy;
    @property (nonatomic, getter = isUserInteractionEnabled) BOOL userInteractionEnabled;

    - (IBAction)A1Buy:(UIBarButtonItem *)sender;

TableViewController.m:

    @implementation A1ViewController

    @synthesize A1Buy = _A1Buy;
    @synthesize userInteractionEnabled;

    - (IBAction)A1Buy:(UIBarButtonItem *)sender {
   [TableViewCell Enable]; //this is where it gives an error

    }

TableViewCell.h:

    @interface TableViewCell : UITableViewCell {
    BOOL Enable;
    BOOL Disable;
    }
    @property (nonatomic, getter = isUserInteractionEnabled) BOOL userInteractionEnabled;

TableViewCell.m:

    @implementation TableViewCell;

    @synthesize userInteractionEnabled;

    - (BOOL) Enable {
    return userInteractionEnabled = YES;
    }
    - (BOOL) Disable {
    return userInteractionEnabled = NO;
    }

正如您所看到的,我正在尝试使用按钮启用用户交互,但Xcode只给出了“类没有这种方法”等错误。所有文件都是正确导入的,这不是原因。 非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

首先,根据Cocoa标准命名您的方法和变量 - 类具有大写的首字母,变量和方法具有小写的首字母。

这样做可以明显表明您在Enable 上调用TableViewCell方法,它实际上是实例方法。您需要获取指向特定表视图单元格的指针并在其上调用该方法。

此外,您实施的方法非常混乱。为什么他们将赋值结果作为布尔值返回?这将始终返回YES。您可能需要学习一些基本的Objective-c培训资源。

答案 1 :(得分:0)

您被声明为- (BOOL) Enable作为实例方法。您无法使用类名称调用实例方法。 解决方案:

  1. 将方法声明为Class方法

     + (BOOL) Enable
    
  2. 创建类的对象,然后使用该对象调用方法

     TableViewCell *cellObj = [[TableViewCell alloc] init];
     [cellObj Enable];
    
  3. 请详细了解课程方法here

    请参阅ios编码约定here