Iphone MVC:在哪里加载视图?
我有一个相对简单的应用程序。我有一个与用户交互的全屏UIView子类(musicGridView),一个加载该类的UIScrollView子类(scrollView),还有一个ViewController和mainWindow.xib 现在,我在nib中加载了一个viewController实例,它的类型是myViewController。nib还有myUIView实例,myViewController指向该实例 在AppDelegate中,我执行以下操作:Iphone MVC:在哪里加载视图?,iphone,uiview,model-view-controller,Iphone,Uiview,Model View Controller,我有一个相对简单的应用程序。我有一个与用户交互的全屏UIView子类(musicGridView),一个加载该类的UIScrollView子类(scrollView),还有一个ViewController和mainWindow.xib 现在,我在nib中加载了一个viewController实例,它的类型是myViewController。nib还有myUIView实例,myViewController指向该实例 在AppDelegate中,我执行以下操作: [window addSubview
[window addSubview:scrollView];
[scrollView addSubview: viewController.view];
scrollView.musicGridView = (MusicGridView*) viewController.view;
我认为这是错误的。理想情况下,appDelegate没有scrollView的实例
在scrollView的AwakeFromNib类中,我对scrollView进行初始化
我认为应该这样做,在appDelegate中加载[window addSubview:viewController.view],然后将viewController指向scrollView而不是musicGridView的实例。然后,在scrollView awakeFromNib中添加musicGridView的子视图
最后,我想创建scrollView拥有的另一个视图,它实际上是一个侧选项卡栏(在给定的API中不可能),用户可以向左滚动以访问它
因此,我想在其他MVC内容中,问题是viewController是否应该指向scrollView,它包含所有其他内容UIView子类,包括musicGridView 听起来您好像没有使用Interface Builder来设计UI。由于这是一个新项目,我建议这样做。您根本不必编写这样的代码。但是,您需要描述您的销售渠道和行动 在处理IB时,您需要知道的两件最重要的事情是
IBOutlet
和IBAction
关键字
示例类标题:
@interface MyClass : NSObject {
IBOutlet UIScrollView* myScrollView;
}
- (IBAction) doWork;
@end
现在,您可以使用Interface Builder通过鼠标将源拖动到目标来连接这两件事。YouTube上有很多关于IB的教程视频,如果你需要更好地描述如何做到这一点。我是一个不使用Interface Builder进行UI设计的人;根据我的经验,你要么全IB,要么全编程。为了解决您的特定问题,我认为您需要将musicGridView作为UIScrollView的实例或扩展 这可以在自定义viewController的loadView方法中完成—只需将其初始化为UIScrollView(并向其添加内容),而不是简单的旧UIView 但是,如上所述,这种方法与以IB为中心的方法不兼容,这在 UIViewController的所有子类 应该实现loadView方法 设置视图属性的步骤,除非 从nib文件加载视图
所以我试过了,结果只是得到了一个空白屏幕。不知道我哪里出了问题。。。