私は少し問題があります。目的C - カテゴリ内の静的変数
MyView1Controller.h MyView1Controller.m MyView1.xib
MyView2Controller.h MyView2Controller.m MyView2.xib
MyView3Controller.h :私のUIViewControllesは全て同じスキームで命名されているので MyView3Controller.m MyView3.xib
ファクトリメソッドを使用してUIViewControllerを初期化することをお勧めします。 そこで私はのUIViewControllerにCateogry実装します:
static NSString *standardNibFileName;
@interface UIViewController (FactoryInstantiation)
+ (id) standardViewController;
@end
をそしてMyView1Controllerコントローラで、私は、静的なnibファイル名の変数を宣言します:
static NSString *standardNibFileName = @"MyView1";
@implementation MyView1Controller
その後、私はこの方法を使用してすべての私のUIViewCOntrollersをインスタンス化できます。
を@implementation UIViewController (FactoryInstantiation)
+ (id) standardViewController;
{
if(standardNibFileName != nil) {
NSString *className = NSStringFromClass([self class]);
Class classToIntantiate = NSClassFromString(className);
return [[classToIntantiate alloc] initWithNibName:className bundle:nil];
}
return nil;
}
@end
INIT:
MyView1Controller *a = [MyView1Controller standardViewController];
しかし、静的変数は常にnilです。
この問題の解決方法に関するご提案はありますか?
私は助けていただきありがとうございます!
ありがとうございます。
+1は創造的です。 –
あなたのカテゴリでは、スタティックがnilであるかどうかチェックし、スタティックであればそれを初期化します。 –
ご協力ありがとうございます! これを初期化するとどういう意味ですか?このカテゴリにはnibファイルの名前はありません。 NSStringFromClassの名前を編集して名前を "計算"する必要はありません。 – Alexander