【发布时间】:2011-03-24 22:49:38
【问题描述】:
我不确定这样做的最佳做法,所以我想我会问。
这是该计划的目标:
- 通过根 UIViewController 创建的自定义导航控制器,它实际上不是 UINavigationController 的子类(便于操作设计)
- 不同屏幕的嵌套视图控制器(由主视图控制器操作)
- 每个嵌套视图控制器都有自己的 nib 文件
目前,我可以使用它,但是每个嵌套视图控制器都不是视图控制器,而是 UIView 的子类。我觉得这是不好的做法,因为我以视图控制器的方式使用这些 UIView,但没有视图控制器的功能(即 viewDidLoad)。此外,这些 UIView 采用了 UIViewController 的常用委托方法(这确实引发了危险信号)。
这真的是不好的做法吗?
当我尝试切换到 UIViewControllers 时,我害怕的事情是我仍然需要创建 UIView 的子类来确定当我通过以下方式加载 nib 时要指向哪个视图:
NSArray *bundle = [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil];
for (id object in bundle) {
if ([object isKindOfClass:[SubclassedUIView class]])
currentScreenViewController = (SubclassedUIView *)object;
}
我还没有检查,但我认为我必须在该语句中执行“SubclassedUIView”,而不仅仅是 UIView,因为捆绑包中还有其他 UIView 对象。但话又说回来,这种情况可能比现在要好。
另一种解决方案可能是让 MainViewController 成为所有需要委托的 UIView 的委托,并创建 MainViewController 的类别,其中包含每个嵌套 nib 的委托方法。
这里有什么想法吗?
【问题讨论】:
标签: objective-c ios uiviewcontroller custom-controls