Ios 带有uinavigationcontroller和uitabarcontroller的iphone应用程序

Ios 带有uinavigationcontroller和uitabarcontroller的iphone应用程序,ios,uinavigationcontroller,uitabbarcontroller,Ios,Uinavigationcontroller,Uitabbarcontroller,我是iphone编程新手,我正在尝试构建一个应用程序,它有一个uinavigationcontroller,rootviewcontroller是一个uiviewcontroller,基本上是一个登录屏幕。从登录屏幕,用户移动到UIAbbarController,它有5个选项卡,每个选项卡是一个uinavigationcontroller,每个navigationcontroller中有两个按钮导航栏上的一个按钮显示消息视图,另一个按钮显示通知视图。每个视图都是uiviewcontroller

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

现在,用户可以按每个选项卡上的消息按钮,消息视图将出现,我想确保如果他按第一个选项卡上的按钮,然后转到另一个选项卡,则消息视图将消失并从内存中释放,当他按新选项卡上的消息按钮时,另一个消息视图将显示出现


我尝试在app delegate中创建单个消息视图,每次用户按下消息按钮从app delegate调用方法时,我都会在方法中检查按下了哪个选项卡,并将视图推送到属于该选项卡但无法正常工作的导航控制器。

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


AppDel-->选项卡栏-->导航控制器-->单个视图

您是否意识到可以在窗口中替换根视图控制器?您的应用程序代理的
-applicationdFinishLaunching:withOptions:
方法可能执行以下操作:

window.rootViewController = loginViewController;
设置窗口的
rootViewController
属性时,窗口将添加该视图控制器的视图作为其自身的子视图

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

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

我需要首先加载登录屏幕,并且只有在用户完成登录过程后才能加载tabcontrol。这就是我在应用程序中的操作方式。在验证有效登录(无屏幕)或显示登录屏幕以获取凭据之前,我一直在appDelegate中。一旦一切都通过了测试,加载我的rootController,这是我的TabBar,然后从那里开始。祝你好运。我想你只是说你的观点很奇怪。您只需要以正确的方式推送您的新视图,而将它们推送到另一个navController可能只会让事情变得更困难。很抱歉,我无法提供更多帮助。问题不在于选项卡栏。我需要做的是在每个选项卡中显示消息视图或通知视图,但如果用户在一个选项卡中打开消息视图,然后转到另一个选项卡,则关闭并释放上一个选项卡中的消息视图,并在当前选项卡中打开新视图。您可以更改与每个选项卡关联的视图控制器,就像您可以更改根视图控制器一样,如果您确实希望这样做的话。UITabBarController有一个
viewControllers
属性,您可以将该属性设置为视图控制器数组以配置选项卡。或者,您可以更改每个导航控制器的根视图控制器。但是,作为一个用户,我可以向您保证,我更喜欢单一登录视图,而不是六个单独的登录视图。请编辑您的问题,包括标点符号、大写字母和某种合理的句子结构。不要指望别人替你澄清你的问题。