- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 UINavigationController,我在它上面加载了一个 rootView,它控制我的应用程序的登录过程。
我最近向我的应用程序委托(delegate)添加了一些代码,用于在发生此注销请求时检查我的设置包是否有注销请求我想重新加载 rootView 以便它加载登录 hud,或者只是调用 rootView 中的方法显示登录 HUD。
这就是我在 appdelegate 中为 navigationController 设置 rootView 的方式
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window.rootViewController = self.navigationController; //Adds RootViewController to the NavigationController interface
// etc
}
我想知道有没有办法重新加载 rootViewController?或在应用程序委托(delegate)中从中调用方法?
最佳答案
可以做到,但是比较复杂。如果可能,最好避免它,每个应用程序的具体要求都会有所不同。如果没有看到您应用的源代码,我们无法告诉您它是如何完成的。
基本过程是您需要从 View 中删除所有这些并将所有引用设置为 nil,然后通过代码或再次加载 nib 重新创建它。
一个更好的选择是将 rootViewController
留在原处,并在其顶部呈现一个模态登录 View Controller 。用户登录后,发送 Root View Controller 可以观察到的 NSNotification
,并填充其数据。
等到通知发送后隐藏登录 Controller ,并考虑让 Root View Controller 在主线程执行任何与登录有关的网络操作时阻塞主线程。这样登录 View (带有“登录...”消息?)将保持可见,直到 Root View 完全填充。
关于ios - 如何从 appDelegate 重新加载 rootViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23231388/
我是一名优秀的程序员,十分优秀!