将 UITabBarController 从单独的 XIB 加载到 iPhone 上的 Window 应用程序中
Posted
技术标签:
【中文标题】将 UITabBarController 从单独的 XIB 加载到 iPhone 上的 Window 应用程序中【英文标题】:Loading UITabBarController from separate XIB into Window app on iPhone 【发布时间】:2010-12-29 23:31:00 【问题描述】:我正在制作我编写的 android 应用的 iPhone 版本(所以请多多包涵)。该应用程序有一个主要显示 Web 视图的主视图和一些控制 Web 视图的其他控件。我已经在 UIWindow
上运行了这部分应用程序。
该应用程序的另一部分是“个人资料”页面,用户可以在该页面中输入一些个人资料信息到表单中。由于选项数量众多,我将事物接口放在一个单独的 XIB 中,使用 UITabBarController
将所有内容组合在一起。我已经为应用程序的这一部分创建了一个委托类,以便我可以对视图中的表单字段进行操作。
当应用启动时,它应该在首次运行时向用户显示“个人资料”视图,然后当用户在他的应用中选择“个人资料”时显示个人资料视图。
我遇到的问题是我似乎找不到一个很好的例子(或很好地理解)如何使应用程序加载视图及其委托。如果这是在 Android 下,我将继承 Activity
并让它加载适当的接口文件。
到目前为止,我有一个视图控制器:
@implementation customizeViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]))
// Custom initialization
return self;
- (void)dealloc
[super dealloc];
@end
在应用程序委托头中,我有这个设置来保存我的“个人资料”视图:
UIView *CustomizeWindow;
在didFinishLaunchingWithOptions
内我有以下内容:
CustomizeWindow = [[customizeViewController alloc] initWithNibName:@"CustomizeWindow" bundle:[NSBundle mainBundle]];
[window makeKeyAndVisible];
...其中CustomizeWindow
是“配置文件”视图文件的文件名。
我尝试了几种不同的显示方式,例如将其作为子视图添加到窗口和presentModalViewController
,但均未成功。我怀疑我遗漏了这个难题的一部分,因此我们将不胜感激。
【问题讨论】:
【参考方案1】:从我能读到的所有内容来看,没有办法真正做到这一点。解决方案是把所有东西都扔掉,让它变得更简单。在这种情况下,自定义视图控制器使用 UIScrollView 来包含其他视图,然后以编程方式加载其他 xib 文件。
类似:
NSArray *pages = [[NSBundle mainBundle] loadNibNamed:@"CustomizePage1" owner:self options:nil];
UIView *page1 = [pages objectAtIndex:0];
[page1 setBounds:CGRectMake(0, -20, page1.frame.size.width, page1.frame.size.height)];
[self.scroller addSubview:page1];
然后为您要加载到滚动视图中的每个 xib 执行上述操作。
【讨论】:
以上是关于将 UITabBarController 从单独的 XIB 加载到 iPhone 上的 Window 应用程序中的主要内容,如果未能解决你的问题,请参考以下文章
如何识别从UITabBarController中的更多选项卡或单独选项卡单击视图控制器?
将导航从 UITabbarController 推送到 UIViewController
从最初的 View Controller 如何将 acriss 转移到 UITabBarController 并使用 prepareForSegue
UINavigationController和UITabBarController