ViewController数据共享

时间:2011-02-15 04:56:25

标签: iphone objective-c ios

所以我有两个视图控制器,我在应用程序加载时加载到应用程序委托。一个是登录页面,我有一个用户名和密码,另一个是UITabBarViewController。用户登录后,我只删除了登录视图,因此显示了UITabBarViewController。问题是在我的UITabBarViewController中,我需要来自ViewController的用户名和密码。我该如何解决这个问题?

附加信息:

这基本上就是我想做的事情:

  • 应用程序从登录页面开始:用户ID,密码和登录按钮
  • 点击登录按钮后,在验证凭据后,我们将带领用户进入下一个屏幕
  • 顶部的导航栏(基本上是UINavigationController)
  • 表格视图
  • 底部的标签栏

现在登录后,我希望UITabBarViewController中的所有ViewControllers都能够获取用户在第一个登录屏幕中输入的用户名和密码。

3 个答案:

答案 0 :(得分:4)

我认为最好的设计是让标签栏的控制器呈现用于登录的模态视图控制器。然后,控制器选项卡栏将成为LoginViewController的委托,LoginViewController将在登录完成时通知其委托。登录成功完成后,标签栏的控制器可以关闭LoginViewController。

现在我在更新答案后写了这段代码。您可以弄清楚如何添加自己的UINavigation栏和表视图。问题是关于在视图控制器之间传递数据而不是我一起回答如何通过一堆视图。如果您想了解更多关于将多个视图和控制器组合在一起以获得完整应用程序的信息,我强烈建议您从iOS上编写关于iOS编程的iTunes U课程。

我提供了一个完整,完整且有效的示例,演示了如何正确使用委托在LoginViewController和UIViewController之间共享数据(在您的情况下,UIViewController将由您的标签栏控制器替换)。我还演示了如何使用NSUserDefaults来保存这些可从其他地方访问的数据。

可以找到示例的所有代码here

答案 1 :(得分:0)

1使用根控制器共享数据。

您可以将数据放在根控制器中,根控制器会创建两个视图。

根控制器可以将数据传输到其子视图。

2或使用类构造函数。

创建视图时,可以为它们提供包含数据的参数。

答案 2 :(得分:0)

这不是一个大问题。

您可以在appDelegate类中创建两个NSString变量,并将属性设置为它们。这样您就可以在整个项目中访问这些变量。

您将在登录页面中设置值,您将访问tabBarController中的值。

多数民众赞成。

Reagards,

萨蒂亚