ios – 选择另一个选项卡时的popToRootViewController

ios – 选择另一个选项卡时的popToRootViewController,第1张

概述语境: 我同时使用TabViewController和NavigationController.这两个标签是RECENT和POPULAR,它们显示了一个帖子列表.想象一下,您在RECENT选项卡中并单击一个帖子,然后进入postsShow视图.所以你在导航堆栈中更深.当您转到“热门”选项卡并返回“最近”选项卡时,您仍然可以看到之前单击的帖子.但我想显示一个帖子列表. 我在想什么: 我正在设置Pos 语境:

我同时使用TabVIEwController和NavigationController.这两个标签是RECENT和POPulAR,它们显示了一个帖子列表.想象一下,您在RECENT选项卡中并单击一个帖子,然后进入postsShow视图.所以你在导航堆栈中更深.当您转到“热门”选项卡并返回“最近”选项卡时,您仍然可以看到之前单击的帖子.但我想显示一个帖子列表.

我在想什么:

我正在设置postsShowVIEwController一个TabbarControllerDelegate,当选择一个标签项时,我试图d出到它的根视图控制器.然后,当用户回来时,他将看到rootVIEwController,它是帖子列表而不是postsShow视图.

码:

vIEwDIDAppear
self.tabbarController.delegate = self;

vIEwDIDdisappear
self.tabbarController.delegate = nil;


UITabbarControllerDelegate

- (BOol) tabbarController:(UITabbarController *)tabbarController shouldSelectVIEwController:(UIVIEwController *)vIEwController {    [self.navigationController popToRootVIEwControllerAnimated:NO];    return YES;}

它是如何工作的:

>转到最近的标签
>点击帖子转到postsShow视图
>转到热门标签
>返回最近的标签(我希望看到帖子列表而不是postsShow视图)
>错误! EXC_BAD_ACCESS

编辑:
根据答案建议的做法,我得到一个稍好的行为但仍然最终出现错误.

- (voID)tabbarController:(UITabbarController *)tabbarController dIDSelectVIEwController:(UIVIEwController *)vIEwController{    UINavigationController *navigation = (UINavigationController*) vIEwController;    [navigation popToRootVIEwControllerAnimated:NO];}

>转到最近的标签
>点击帖子转到postsShowvIEw
>转到热门标签
>返回最近的标签
>我看到一个帖子列表(没有错误!)
>返回热门标签:ERR_BAD_ACCESS!

编辑:
这是我的故事板

EDIT2:

全栈跟踪:

* thread #1: tID = 0x4a37c,0x0000000197bb7bd0 libobjc.A.dylib`objc_msgSend + 16,queue = 'com.apple.main-thread',stop reason = EXC_BAD_ACCESS (code=1,address=0x10)    frame #0: 0x0000000197bb7bd0 libobjc.A.dylib`objc_msgSend + 16    frame #1: 0x000000018ab52078 UIKit`-[UITabbarController _tabbarItemClicked:] + 104    frame #2: 0x000000018a9891ec UIKit`-[UIApplication sendAction:to:from:forEvent:] + 96    frame #3: 0x000000018ab51fb4 UIKit`-[UITabbar _sendAction:withEvent:] + 468    frame #4: 0x000000018a9891ec UIKit`-[UIApplication sendAction:to:from:forEvent:] + 96    frame #5: 0x000000018a9722c8 UIKit`-[UIControl _sendActionsForEvents:withEvent:] + 612    frame #6: 0x000000018ab51bec UIKit`-[UITabbar(Static) _buttonUp:] + 128    frame #7: 0x000000018a9891ec UIKit`-[UIApplication sendAction:to:from:forEvent:] + 96    frame #8: 0x000000018a9722c8 UIKit`-[UIControl _sendActionsForEvents:withEvent:] + 612    frame #9: 0x000000018a988b88 UIKit`-[UIControl touchesEnded:withEvent:] + 592    frame #10: 0x000000018a947da8 UIKit`_UIGestureRecognizerUpdate + 8536    frame #11: 0x0000000185e8fff0 CoreFoundation`__CFRUNLOOP_IS_CALliNG_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32    frame #12: 0x0000000185e8cf7c CoreFoundation`__CFRunLoopDoObservers + 360    frame #13: 0x0000000185e8d35c CoreFoundation`__CFRunLoopRun + 836    frame #14: 0x0000000185db8f74 CoreFoundation`CFRunLoopRunspecific + 396    frame #15: 0x000000018f8136fc GraphiCSServices`GSEventRunModal + 168    frame #16: 0x000000018a9bad94 UIKit`UIApplicationMain + 1488  * frame #17: 0x0000000100023ff4 toaster-objc`main(argc=1,argv=0x000000016fdeba50) + 124 at main.m:14    frame #18: 0x000000019824ea08 libdyld.dylib`start + 4
解决方法 这是我在swift中的表现:

func tabbarController(tabbarController: UITabbarController,dIDSelectVIEwController vIEwController: UIVIEwController) {    self.tabbarSelectedindex = tabbarController.selectedindex    var navigation = vIEwController as! UINavigationController    navigation.popToRootVIEwControllerAnimated(false)    // rest of the logic}

类似于Objective-C:

- (voID)tabbarController:(UITabbarController *)tabbarController dIDSelectVIEwController:(UIVIEwController *)vIEwController {    self.tabbarSelectedindex = tabbarController.selectedindex;    UINavigationController *navigation = (UINavigationController*) vIEwController;    [navigation popToRootVIEwControllerAnimated:NO];}

请注意,我使用了UITabbarController的dIDSelectVIEwController方法.

你可以检查它here:

总结

以上是内存溢出为你收集整理的ios – 选择另一个选项卡时的popToRootViewController全部内容,希望文章能够帮你解决ios – 选择另一个选项卡时的popToRootViewController所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1046824.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存