将UITabBarController从单独的XIB加载到iPhone上的Window应用程序中

时间:2010-12-29 23:31:01

标签: iphone objective-c uitabbarcontroller xib

我正在制作我编写的Android应用程序的iPhone版本(所以请耐心等待)。该应用程序有一个主视图,基本上显示一个Web视图和一些控制webview的控件。我已经让这部分应用程序在UIWindow上面工作了。

该应用程序的另一部分是“个人资料”页面,允许用户在表单中输入一些个人资料信息。由于选项数量庞大,我使用UITabBarController将thing接口放在一个单独的XIB中,以便将所有内容保存在一起。我已经为应用程序的这一部分设置了一个委托类,以便我可以对视图中的表单字段进行操作。

当应用程序启动时,它应该在第一次运行时向用户显示“配置文件”视图,然后在用户在应用程序中选择“配置文件”时显示配置文件视图。

我遇到的问题是我似乎无法找到一个好的例子(或者很好地理解)如何使应用程序加载视图和它的委托。如果这是在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 个答案:

答案 0 :(得分: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执行上述操作。