2

tableview コントローラーの実装で、tableviewcell ファイルに実装したメソッドの 1 つを使用できません。Web と 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 では「クラスにこのメソッドがありません」などのエラーしか表示されません。すべてのファイルが正しくインポートされているので、そうではありません。助けていただければ幸いです。ありがとう!

4

2 に答える 2

1

まず、Cocoa 標準に従ってメソッドと変数に名前を付けます。クラスの最初の文字は大文字で、変数とメソッドの最初の文字は小文字です。

これを行うと、実際にはインスタンスメソッドであるclassEnableでメソッドを呼び出していることが明らかになります。特定のテーブル ビュー セルへのポインタを取得し、そのメソッドを呼び出す必要があります。TableViewCell

また、実装されたメソッドは非常に混乱します。割り当ての結果をブール値として返すのはなぜですか? これは常に YES を返します。Objective-C の基本的なトレーニング リソースを学習する必要がある場合があります。

于 2012-11-18T17:41:22.403 に答える
0

あなたは- (BOOL) Enableインスタンスメソッドとして宣言されています。クラス名を使用してインスタンス メソッドを呼び出すことはできません。ソリューション:

  1. メソッドを Class メソッドとして宣言する

     + (BOOL) Enable
    
  2. クラスのオブジェクトを作成し、そのオブジェクトを使用してメソッドを呼び出します

     TableViewCell *cellObj = [[TableViewCell alloc] init];
     [cellObj Enable];
    

クラス メソッドの詳細については、こちらを参照してください。

iOS コーディング規約はこちらを参照してください。

于 2012-11-19T04:30:10.243 に答える