2

我一直在为我的第一个真正的 iPhone 应用程序苦苦挣扎,并想就如何构建它获得一些建议。我正在寻找一些关于创建 UI 组件并将它们链接在一起以创建应用程序流的最佳实践(以编程方式创建视图/控制器与使用 Interface Builder 等...)。

概述:
我需要在应用程序启动时显示“登录”视图。
--如果他们单击注册按钮,则显示“注册”视图。

登录后...我有一个 TabBarController 加载 4 个视图。这 4 个视图将必须加载子视图(主详细信息)。

我的问题是:
1)将这个导航结构拼凑在一起的最佳方式是什么?将每个视图创建为具有相应 ViewController 的 .xib?这些是怎么粘在一起的?

2)我应该如何处理登录/注册导航,开始时不应该显示TabBar,但在验证用户后需要它。

奖励点)这种东西是否有记录的最佳实践?我一直在编写一些可行的代码,但我迷失了方向,想以正确的方式重新开始。

我知道这可能有点令人困惑,非常感谢所有帮助。

编辑:对于标签栏顶部的登录视图,我使用了这个,非常简单。

LoginViewController *loginViewController = [[LoginViewController alloc] init];
[loginViewController initWithNibName:@"Login" bundle:nil];
[self.tabBarController presentModalViewController:loginViewController 动画:YES];
4

3 回答 3

1

1) 将这种导航结构拼凑在一起的最佳方式是什么?将每个视图创建为具有相应 ViewController 的 .xib?这些是怎么粘在一起的?

根据需要使用UINavigationController自定义视图并将其推送到导航堆栈上。通过 Xcode 的New Project选项查看示例 Navigation Controller 应用程序,以了解其工作原理。

2)我应该如何处理登录/注册导航,开始时不应该显示TabBar,但在验证用户后需要它。

设置登录视图(我会使用一个UITableView包含两行用户名和密码的部分,但这是我自己的偏好)。为注册字段设置第二个单独的视图(同样,我会为此使用一个UITableView,以保持布局干净和一致)。

也许在成功认证后使用视图动画弹出标签栏。

奖励点)这种东西是否有记录的最佳实践?我一直在编写一些可行的代码,但我迷失了方向,想以正确的方式重新开始。

你最终会多次重写你的项目——这是一件好事。请查看 Apple 的示例应用程序(可从 iPhone ADC 站点获得),因为这些应用程序包含使用多个UIKit组件的几种“最佳实践”方式。至于组装一个更大的应用程序,请让您的设计尽可能简单,并尽可能多地重用 Apple 的 UI 组件。您以后可以随时自定义。

于 2009-05-05T09:53:40.590 回答
1

当您在 XCode 中创建一个新的基于选项卡栏的应用程序时,您几乎已经按照您想要的方式进行了设置 - 有一个主 XIB 可以从单独的 XIB 文件中为每个选项卡加载视图。每个选项卡有一个 XIB。请注意,当您更改类型或添加选项卡时,您需要在带有选项卡栏的 XIB 和用于创建视图的 XIB 中指定正确的视图控制器类型!

至于登录视图,一种常见的方法是使用上面的选项卡栏,但在应用程序委托 applicationDidFinishLaunching 方法中呈现一个显示登录屏幕的模式视图控制器。模态控制器隐藏选项卡栏和其他所有内容,直到它们完成,然后可以将其关闭。

于 2009-05-06T07:04:57.303 回答
0

在我看来,只有 Cocoa 编程示例和非常简单的应用程序才适合单个 nib 文件。否则,您应该将界面组件分布在多个 nib 上。这意味着每个 nib 都更小,当加载到内存中时,只会在必要时加载那些组件。这将提高您的应用程序的性能,并有助于在逻辑上组织您的程序并在出现问题时更容易调试。

在我的标签栏应用程序中,我使用 MainWindow.xib 来包含主窗口和标签栏,但由于上述原因,我将每个标签分成一个单独的 nib。

Apple 提供以下指南:

创建 nib 文件时,请记住以下准则:

设计您的 nib 文件时要考虑到延迟加载。计划立即加载仅包含您需要的对象的 nib 文件。

在 Mac OS X 应用程序的主 nib 文件中,请考虑在 nib 文件中仅存储应用程序菜单栏和可选的应用程序委托对象。避免包含在应用程序启动之前不会使用的任何窗口或用户界面元素。相反,将这些资源放在单独的 nib 文件中,并在启动后根据需要加载它们。

将重复的用户界面组件(例如文档窗口)存储在单独的 nib 文件中。

对于仅偶尔使用的窗口或菜单,将其存储在单独的 nib 文件中。通过将其存储在单独的 nib 文件中,只有在实际使用时才将资源加载到内存中。

欲了解更多信息,您可以访问:

http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4

于 2009-05-05T09:17:04.140 回答