Iphone iOS-如何删除应用程序窗口层次结构中的所有ViewController?
我的应用程序使用典型的身份验证场景,用户使用其凭据登录服务器,服务器返回身份验证令牌,然后将其存储在客户端(iPhone)本地 现在不太可能,但随着时间的推移,存储的身份验证令牌可能会变得无效。由于使用该无效令牌发出的每个请求都会失败,因此我希望在第一次失败时通过将用户“注销”应用程序来处理该问题。注意:该请求可能在后台线程中发出,因为应用程序正在定期与服务器同步 注销意味着:Iphone iOS-如何删除应用程序窗口层次结构中的所有ViewController?,iphone,ios,objective-c,xamarin.ios,Iphone,Ios,Objective C,Xamarin.ios,我的应用程序使用典型的身份验证场景,用户使用其凭据登录服务器,服务器返回身份验证令牌,然后将其存储在客户端(iPhone)本地 现在不太可能,但随着时间的推移,存储的身份验证令牌可能会变得无效。由于使用该无效令牌发出的每个请求都会失败,因此我希望在第一次失败时通过将用户“注销”应用程序来处理该问题。注意:该请求可能在后台线程中发出,因为应用程序正在定期与服务器同步 注销意味着: 删除本地存储的令牌 删除用户存储的所有其他内容(在Sqlite中) “重定向”用户到登录控制器 因此,用户可能正在查看
在显示登录控制器之前,“杀死”所有活动控制器的最佳方法是什么?将您的LoginViewController分配给窗口的
rootViewController
。下面是文档中对rootViewController的描述。这听起来和你想要完成的事情一模一样
根视图控制器提供窗口的内容视图。将视图控制器指定给此属性(以编程方式或使用Interface Builder)会将视图控制器的视图安装为窗口的内容视图。如果窗口具有现有视图层次结构,则在安装新视图之前将删除旧视图
您的意思是类似于
[self.navigationController poptrootviewcontrolleranimated:YES]代码>?是,但可能存在嵌套的导航控制器。poptroot…
返回堆栈中的第一个。如果不在其他地方使用,所有其他的都会被释放。啊。。。。我已经这样做了,但是有一些副作用,因为我认为没有在主UI线程上这样做。无论如何谢谢你!没错。您需要更新主线程上的视图控制器。要做到这一点,只需使用dispatch_async并传入主线程和需要完成的工作的调度队列。