带有 uinavigationcontroller 和 uitabbarcontroller 的 iphone 应用程序

Posted

技术标签:

【中文标题】带有 uinavigationcontroller 和 uitabbarcontroller 的 iphone 应用程序【英文标题】:iphone app with uinavigationcontroller and uitabbarcontroller 【发布时间】:2011-09-01 12:50:54 【问题描述】:

我是 iphone 编程新手,我正在尝试构建一个具有 uinavigationcontroller 的应用程序,而 rootviewcontroller 是一个 uiviewcontroller,它基本上是一个登录屏幕,用户从登录屏幕移动到具有 5 个选项卡的 uitabbarcontroller,每个选项卡选项卡是一个 uinavigationcontroller,每个导航控制器在导航栏中有两个按钮,一个按钮带来消息视图,另一个按钮带来通知视图,每个视图都是一个 uiviewcontroller。

现在用户可以按下每个选项卡上的消息按钮,消息视图将出现,我想确保如果他按下第一个选项卡上的按钮然后转到另一个选项卡,那么消息视图将消失并解除分配从内存中,当他按下新标签上的消息按钮时,将出现另一个消息视图。

我尝试在应用程序委托中创建单个消息视图,并且每次用户按下消息按钮以从应用程序委托调用方法时,然后在该方法中我检查按下了哪个选项卡并将视图推送到导航控制器属于该选项卡但不能正常工作。

【问题讨论】:

请编辑您的问题以包括标点符号、大写字母和某种合理的句子结构。不要指望别人帮你解决问题。 【参考方案1】:

您可以在 AppDelegate 中嵌入您的登录视图,并根据需要显示它们。从那里你将加载你的 rootController,它应该是你的 tabBar。然后您可以在每个选项卡中加载导航控制器。每个选项卡一个。可以从任何选项卡调用您的消息视图。只需要确保以正确的方式对控制器进行分层。

AppDel --> TabBar --> NavController --> 单个视图

【讨论】:

我需要先加载登录屏幕,并且只有在用户完成登录过程后才加载tabcontrol。 这就是我在我的应用程序中的做法。我坚持在 appDelegate 中,直到我验证有效登录(无屏幕)或显示登录屏幕以获取凭据。一旦一切顺利,加载我的根控制器,它是我的 TabBar,然后从那里开始。祝你好运。 我认为你只是在说你的观点很奇怪。你只需要以正确的方式推送你的新视图,然后将它们推送到另一个 navController 可能只会让事情变得比它需要的更难。抱歉,我无法提供更多帮助。【参考方案2】:

您是否意识到您可以替换窗口中的根视图控制器?您的应用委托的 -applicationDidFinishLaunching:withOptions: 方法可能会执行以下操作:

window.rootViewController = loginViewController;

当您设置窗口的rootViewController 属性时,窗口将添加该视图控制器的视图作为其自身的子视图。

-applicationDidFinishLaunching:withOptions: 并没有什么特别之处——它只是在应用程序完成加载并准备开始工作时调用的委托方法。您也可以通过其他方法设置窗口的rootViewController 属性,因此当您的登录视图控制器确定用户已成功登录时,它可以执行以下操作之一:

实例化标签栏控制器并设置窗口的rootViewController属性本身 向其委托(可能与应用委托相同的对象)发送一条消息,通知它登录成功;然后代理可以安装标签栏控制器 广播通知,告诉关心登录成功的人,并让其他人安装标签栏控制器

【讨论】:

问题不在于标签栏,我需要做的是在每个标签中显示消息视图或通知视图,但如果用户在一个标签中打开它然后转到另一个选项卡,然后关闭并处理上一个选项卡中的消息视图,并在当前选项卡中打开一个新视图 您可以更改与每个选项卡关联的视图控制器,就像您可以更改根视图控制器一样,如果您确实想要这样做的话。 UITabBarController 有一个 viewControllers 属性,您可以将其设置为视图控制器数组以配置选项卡。或者,您可以更改每个导航控制器的根视图控制器。但是,作为用户,我可以向您保证,与六个单独的登录视图相比,我更喜欢单个登录视图。

以上是关于带有 uinavigationcontroller 和 uitabbarcontroller 的 iphone 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在 UINavigationController 中添加带有标题的图像

带有自定义 NavigationBar 的 UINavigationController

带有 uinavigationcontroller 和 uitabbarcontroller 的 iphone 应用程序

UINavigationController 推送带有隐藏导航栏的视图控制器

带有自定义垂直按钮栏的 UINavigationController

带有 UINavigationController 作为选项卡的 UITabViewController