跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • ios 两个 ViewController 跳转相关问题咨询
未分類
17 9 月 2020

ios 两个 ViewController 跳转相关问题咨询

ios 两个 ViewController 跳转相关问题咨询

資深大佬 : MrLQX 0

使用 oc 写了两个 ViewController 界面,从 AViewController 跳转到 BViewController 使用了[self presentViewController:bVC animated:YES completion:nil]; 但是我想跳转的同时把 AViewController 销毁掉,使用[self dismissViewControllerAnimated:YES completion:nil];也无法实现,还有什么比较好的方法吗

大佬有話說 (37)

  • 主 資深大佬 : MrLQX

    Android activity 跳转只需要 finsh 就好了,因为不怎么熟悉 ios,Google 了一天,也找不到比较好的方法

  • 資深大佬 : xayoung

    这样做的目的是什么?

  • 主 資深大佬 : MrLQX

    @xayoung 登录界面有手机验证码和密码登录界面,跳转到密码登录界面的时候把手机验证码界面关闭了

  • 資深大佬 : Lin0936

    push 到 B 然后把 root 替换成 B

  • 主 資深大佬 : MrLQX

    @Lin0936 我试试

  • 資深大佬 : baijiahei

    用 push 啊 present 是一些临时展示的或者临时设置界面才用这个吧

  • 資深大佬 : CommandZi

    先 dismissA 再 presentB

  • 主 資深大佬 : MrLQX

    @CommandZi 不行,这个试过了

  • 主 資深大佬 : MrLQX

    @baijiahei 使用 NavigationController 才可以使用 push,目前我没有使用 NavigationController

  • 資深大佬 : EggmanQ

    父 VC: VC

  • 資深大佬 : EggmanQ

    靠, 按错了,

  • 資深大佬 : kera0a

    用 push
    现在 nav 的 viewControllers 里有 [root,A]
    然后 nav.serViewController([root,B])

    push 能自定义跳转动画,有个页面栈数组,可以随意调整

  • 資深大佬 : CommandZi

    @MrLQX 肯定姿势错了,不要用 A presentB,用 A 的上一级

  • 資深大佬 : EggmanQ

    连续按错, 我觉得思路可以这样

    父 VC addChildVC: AVC, BVC

    父 VC.view addSubView: AVC.view, BVC.view

    然后可以自定义处理两个 View 的显示和动画, 数据和验证逻辑可以给到父 VC 处理

  • 資深大佬 : frqk

    bVC 的实例是在 aVC 创建的话,不能在 bVC 移除 aVC 吧。
    要是 aVC 和 bVC 是在某个 VC 上的话,在 bVC 里 delegate 给那个 VC 让他把 aVC 移除了应该是可以的。

  • 資深大佬 : codeisjobs

    不要销毁 a 界面。等登录成功后重新设置 uiapplication 的 keywindow.rootviewcontroller 的时候再 dismiss a 界面

  • 資深大佬 : codeisjobs

    如果不想在 b 界面可以返回的话,就不设置左侧返回按钮,然后设置全屏显示。

  • 主 資深大佬 : MrLQX

    @codeisjobs 我这边 a 界面右下角有个切换按钮,点击这个按钮可以跳转到 b 界面

  • 主 資深大佬 : MrLQX

    @codeisjobs 主要是这个按钮跳转的实现,a 跳转到 b 的时候,销毁 a

  • 資深大佬 : BabyYuuki

    你在 bVC 退出的时候,用 present AViewController 界面的那个控制器调用 dismissViewControllerAnimated 方法试试呢

  • 資深大佬 : codeisjobs

    @MrLQX 看你怎么跳的,present 方法的话,不好 dismiss,除非是用 rootviewcontroller 方式跳的

  • 資深大佬 : codeisjobs

    @MrLQX 推荐你 a 全屏 present b,然后登录完成后,重新设置 rootvc,同时 b 里面 dismiss

  • 資深大佬 : Elethom

    亲亲,这边建议您转行呢。

  • 資深大佬 : isRealLeven

    亲亲,这边建议您转行呢。

  • 資深大佬 : MrStark

    其实你可以把 A 和 B 都作为子控制器放在同一个控制器下进行切换操作的,这样就可以自由操作 A 和 B 的显示与释放了。

  • 主 資深大佬 : MrLQX

    感谢各位大佬,我主要是 Android 开发,ios 只是被拉过来写的点东西

  • 資深大佬 : sjsurf

    你可以考虑把 A 和 B 谁 present 颠倒一下。

  • 資深大佬 : sjsurf

    刚才理解错误你的需求了。 如果你的需求是 A 或者 B 的关系的话 应该用 subViewController 然后改 view 的转场动画。

  • 資深大佬 : yu5121199

    亲亲,这边建议您转行呢。

  • 資深大佬 : superpeaser

    你这样设计就不合理呢,建议你看看主流的 app 关于验证码和密码登录切换的逻辑是怎么设计的…

  • 資深大佬 : salor

    VC 页面跳转子级不能销毁父级。你可以把两种验证方式作为两个视图,做好动画效果就行了。

  • 資深大佬 : vincentxue

    你这个是安卓的思维,iOS 的世界不是这样搞。登录注册转主页是一个很常见的逻辑,A present 到 B,在 B 里面完成之后在 dismiss 的同时发个通知把 rootVC 给换掉就行了,这是最简单的做法。这样 B 在 dissmiss 之后就销毁了,A 在 root 被换了之后没有引用也自己销毁了。

  • 資深大佬 : Building

    将 AVC 作为子控制器添加到主控制器上,就可以 present BVC 后销毁掉 AVC 。

  • 資深大佬 : canxden

    代码上 b push a,然后不要动画,登录完毕,a diss 要动画就好了…

  • 資深大佬 : canxden

    如果一定要 a 到 b,再把 b 销毁,就切换 appdelegte 的 windows 的 rootvc,但是 a 和 b 不能是公用一个导航栏…

  • 資深大佬 : laucenmi

    appDelegate.window?.rootViewController = newVC
    oldVC 会自己销毁,直接赋值没动画效果,有需要可以自己加上

  • 資深大佬 : MarginK

    你从 A present B 当然不可能销毁 A,因为只要 B 的视图层级没变,A 就永远都是 B 的 presentedViewController,你甚至还能从 A.presentedViewController 获取到 B

    还有,iOS 就不要去想着手动销毁页面的思维了,如果页面没有自动 dealloc 要么是你对使用的理解不对,要么是该 VC 中有东西释放不掉,请自己检查代码哦。

    主不想自己实现 present 动画的话,就换一个方式转场吧,上说的直接设置 window 的跟视图就是去了些动画,但能满足你的需求

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具