我确实有一点问题。 由于我的UIViewControlles都以相同的方案命名:
MyView1Controller.h MyView1Controller.m MyView1.xib
MyView2Controller.h MyView2Controller.m MyView2.xib
MyView3Controller.h MyView3Controller.m MyView3.xib
我现在更喜欢通过工厂方法初始化我的UIViewControllers。 因此,我将在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
初始化:
MyView1Controller *a = [MyView1Controller standardViewController];
但静态变量总是为零。
有关如何解决此问题的任何建议?
我将不胜感激任何帮助!
提前致谢。
答案 0 :(得分:1)
您可以在UIViewController
类上声明一个+方法,并覆盖实现类
+ (NSString*) getStandardNibFileName {
return @"nibName"
}
编辑:如果实现类具有与基础相同的nibName,则不必覆盖该函数。
答案 1 :(得分:0)
你有静态NSString * standardNibFileName;在.h文件中,我希望尝试删除它 static NSString * standardNibFileName = @“MyView1”; .m绰绰有余