【问题标题】:Showing a different XIB/NIB in an iOS app在 iOS 应用程序中显示不同的 XIB/NIB
【发布时间】:2011-06-29 19:52:12
【问题描述】:

我有多个 nib (xib) 文件,我希望用户在点击按钮时看到不同的文件。我在寻找什么:

- (IBAction)buttonTap {
//Code for showing a different nib goes here
}

我不知道该怎么做。我可以在 nib 文件中显示不同的视图,但我无法让它显示不同的 nib。当用户点击按钮时如何显示不同的笔尖?

感谢任何帮助!谢谢!

【问题讨论】:

标签: objective-c ios xib nib


【解决方案1】:

我处理实际 xib 之间切换的方式,我确信有多种方法可以完成相同的事情,就是让我的 App Delegate 充当我的视图之间的路由中心。

我订阅了我的 App Delegate 以接收来自现有视图的按钮按下事件。当它收到切换视图的请求时,例如按下按钮,我会这样做:

- (void) showLogin
{  
    LoginViewController *loginViewController = [[LoginViewController alloc]
                                                   initWithNibName:@"LoginViewController" bundle:nil];

    // Show
    self.loginViewController = loginViewController;
    [loginViewController release];

    self.window.rootViewController = self.loginViewController;
}

我将rootViewController 设置为我试图显示的视图。它不会释放旧控制器,而只是替换正在显示的视图。您可以放入更多逻辑以确定它是否已显示,关闭其他视图等。用最简单的术语来说,这对我有用。

【讨论】:

  • 嗯,当我尝试这个时,我得到了两种类型的错误。我得到一个:“未知的接收者”和一个“未声明的标识符”。我究竟做错了什么?这仅适用于一种项目类型吗?
  • 您是否声明了一个属性来保存对您尝试显示的控制器的引用?您是否正确订阅了正在引发的事件?
  • 至于未声明的标识符,我需要在头文件中声明视图控制器吗?如果是这样,我是在我想要显示的视图的头文件中声明它还是在不同的头文件中声明它?如何订阅活动?很抱歉给您带来麻烦,但我是 xcode 和 Objective-c 的新手。
  • 正如我在上面的代码中提到的,我将loginViewController 引用存储为我的 AppDelegates 标头中的属性。我设置了这个,这样我就不需要在每次调用函数时创建我的登录控制器的新实例(未显示)。为此,您需要在 AppDelegate 标头中保留一个引用。
猜你喜欢
  • 2014-05-31
  • 2012-03-24
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
相关资源
最近更新 更多