将 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

UINavigationController到UITabBarController

从 UITabBarController 内部呈现 UINavigationController