0

2 つの UIViewController サブクラスがあり、どちらも UITextFieldDelegate プロトコルに準拠しています。IOW、私はこれらのクラスを持っています。

# MyVC1.h
@interface MyVC1 : UIViewController <UITextFieldDelegate>

# MyVC1.m
@interface MyVC1 () {
    // Private variable, so not a property
    UITextField *_myTextField;
}
@end

@implementation MyVC1

- (void)viewDidLoad
{
    _myTextField = [self textFieldwithPlaceHolderText:@"*Text"];
}
@end

もちろん、クラス名を除いて、MyVC2 クラスの同じコード。

ただし、これは奇妙な部分です。私のコードは MyVC1 用にコンパイルされますが、MyVC2 用にはコンパイルされません。MyVC2 の場合、コンパイラは「"MyVC2" の目に見える @interface がセレクター "textFieldwithPlaceHolderText" を宣言していない」と言います。

4

3 に答える 3

0

Jsdodgers が言ったように、textFieldwithPlaceHolderText は UITextFieldDelegate のメソッドではありません。両方のコントローラーの #imports セクションを確認してください。おそらく、VC1 は、そのメソッドを追加する UIViewController クラスのカテゴリをインポートします。カテゴリのインポートは次のようになります: #import "UIViewController+ _ .h"

于 2013-08-19T02:41:28.823 に答える
0

インターフェイス a の myVc2.h のメソッド「textFieldwithPlaceHolderText」をコピーし、myvc2.m に実装します。

于 2013-08-19T15:40:53.767 に答える