【问题标题】:UIViewController and UITabBarController app - viewDidLoad called only onceUIViewController 和 UITabBarController 应用程序 - viewDidLoad 仅调用一次
【发布时间】:2010-11-06 03:08:26
【问题描述】:

我当前的应用程序由一个带有 4 个不同选项卡的 UITabBarController 和一个 UIViewController 组成。我的 tabBarController 是 rootController 而 UIViewController 主要用于我的用户登录视图。当应用程序加载时,两个视图都加载了覆盖 tabBar 的登录视图。

我为 loginViewController 的 viewDidLoad 方法添加了一些日志记录。我看到这个方法在初始启动时被调用。用户成功登录后,现在可以查看 tabBarController 视图。我设置了一个从 tabBarController 注销的操作。此方法将 user/pass 设置为 nil 并调用委托方法以再次加载我的 loginView。

-(void)setLoginView { [窗口 addSubview:loginController.view];
}

我正在添加一些检查,但没有触发,因为 viewDidLoad(在 loginViewController.m 中)再也不会被调用。注销时,我的文本字段仍然具有我第一次登录时输入的用户/密码。所以我的一项检查是将文本字段重置为 nil 等。

我可能在这里使用了错误的术语,但无论如何要“刷新”这个 loginController,每次用户注销时都会调用 viewDidLoad 方法?

也是为了记录。我非常感谢帮助回答我之前问题的每个人。它真的很有帮助,我很感激。

谢谢

【问题讨论】:

    标签: iphone objective-c cocoa-touch uikit uiviewcontroller


    【解决方案1】:

    也许尝试使用-(void)viewWillAppear:(BOOL)animated {...} 代替 viewDidLoad?

    【讨论】:

    • 我将此添加到我的 setLoginView 方法中。 -(void)setLoginView { [窗口 addSubview:loginController.view]; [登录控制器 viewDidLoad];我现在看到我的日志调用了 viewDidLoad 方法。可接受的做法?
    • 嗯。我想这可能不是“传统的”,但如果它有效的话。 :3
    • 好吧,我不想养成任何“坏习惯”,所以如果有更合适的方法,我希望得到反馈。
    • 玩弄了你的建议,这正是我所需要的。再次感谢。
    【解决方案2】:

    当视图被inited 时,每次只调用一次viewDidLoad。我不确定执行loginController.view = nil 是否会导致视图卸载,但我认为它应该可以工作,因此下次访问view 属性时,视图将再次加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多