我正在使用注册/登录的应用程序。
我的根控制器是UITabBarController
。
每个标签都是一个视图控制器。
我想让其中一个成为登录标签。
每次启动应用程序并且用户切换到此选项卡时,它都会检查用户是否已登录。如果没有,则会显示注册表控制器,同时显示登录控制器用户登录时。
为了实现这个功能,我分别编写了两个视图控制器(寄存器1和登录一个)。
为了遵守 MVC 风格,我还制作了两个 UIView 类来渲染视图。
总结一下,结构是
root viewcontroller(UITabBarController) -> user tab controller(UIViewController) -> login/register view controller(UIViewController -> login/register view(UIView)
login/register controller
是user tab controller
的 childViewController 。
用户注册后,我希望从register controller
删除user tab controller
,这是其父控制器。
当我在视图(UIView)中处理触摸事件时,我在其中创建协议并使用户选项卡控制器成为其委托。
注册完成后,视图会告诉代理删除其子控制器。
#pragma mark - RegViewDelegate
-(void)parentViewControllerPop{
[_cRegController removeFromParentViewController];
NSLog(@"_cRegController removed from parent viewcontroller");
}
然而,在那之后,视图仍然显示在屏幕上,为什么?
我不认为设计是好的,但我不知道实现我想要的最佳方式是什么。
有人可以帮忙吗?
答案 0 :(得分:-1)
要从父级移除子视图控制器,您需要执行以下3个步骤:
viewController.willMoveToParentViewController(nil)
viewController.view.removeFromSuperview()
viewController.removeFromParentViewController()