• iOS 如何pop到指定页面

    2016-04-05 11:35:46
    当我们做app的时候有时候会遇到这样的需求,根视图是A一个“个人信息” 页面,点击头像...修改后我们需要Pop到B视图,然而苹果给我们提供的有两种方法 1、推出根视图控制器 - (nullable NSArray *)popToRootViewCo

    当我们做app的时候有时候会遇到这样的需求,根视图是A一个“个人信息” 页面,点击头像会push到“个人详细信息”的B页面,当我们点击某一个详细的信息进行修改时会push到“修改信息”的C页面(或者会有详细的地区选择的D、E、F等等)。修改后我们需要Pop到B视图,然而苹果给我们提供的有两种方法

    1、推出到根视图控制器

    - (nullable NSArray<__kindof UIViewController *> *)popToRootViewControllerAnimated:(BOOL)animated;


    2、推出到指定的视图控制器

    - (nullable NSArray<__kindof UIViewController *> *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;

    然而当我们直接用第二种方法时系统会“崩溃”,提示

    Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.'


    pop推出的视图控制器并不存在,那么我们该如何使用呢?

    for (UIViewController *controller in self.navigationController.viewControllers) {
                if ([controller isKindOfClass:[ReviseUserInformationViewController class]]) {
                    ReviseUserInformationViewController *revise =(ReviseUserInformationViewController *)controller;
                    [self.navigationController popToViewController:revise animated:YES];
                }
            }

    压入栈了,那我们就可以在栈内查找

    展开全文
  • 实际开发中,经常有一次pop多层页面的需求,每次判断是在太麻烦了,于是我为UINavigationController写了一个Extension。.../** pop到指定的控制器 指定目标控制器的类名即可*/ - (void)popToViewControllerW...

    实际开发中,经常有一次pop多层页面的需求,每次判断是在太麻烦了,于是我为UINavigationController写了一个Extension。纯粹的干货,可以复制粘贴使用。

    .h 文件

    @interface UINavigationController (Extension)
    /**  pop到指定的控制器 指定目标控制器的类名即可*/
    - (void)popToViewControllerWithClassName:(NSString *)className animated:(BOOL)animated;
    
    /**  pop多次 指定pop几层即可 count:层数*/
    - (void)popViewControllerWithCount:(NSInteger)count animated:(BOOL)animated;
    @end
    
    
    

    .m 文件

    
    @implementation UINavigationController (Extension)
    
    - (void)popToViewControllerWithClassName:(NSString *)className animated:(BOOL)animated{
    
        for (UIViewController *VC in self.childViewControllers) {
            if ([VC isKindOfClass:NSClassFromString(className)]) {
                [self popToViewController:VC animated:animated];
                return;
            }
        }
        [self popToRootViewControllerAnimated:animated];
    }
    
    - (void)popViewControllerWithCount:(NSInteger)count animated:(BOOL)animated{
        count = MAX(count, 1);
        NSInteger totalCount  = self.childViewControllers.count;
        NSInteger index = MAX(totalCount-count-1, 0);
        UIViewController *VC = self.childViewControllers[index];
        [self popToViewController:VC animated:animated];
    }
    @end
    
    
    
    

    下篇将贴出dismiss到指定控制器或dismiss多层presentingViewController的方法

    展开全文
  • for i in 0.. if self.navigationController?.viewControllers[i].isKindOfClass(LoanViewController) == true{ // send notification // NSNotificationCenter.defaultCenter().postNotificationName("RefreshDa

    for i in 0..<(self.navigationController?.viewControllers.count)! {
    if self.navigationController?.viewControllers[i].isKindOfClass(LoanViewController) == true{
    // send notification
    // NSNotificationCenter.defaultCenter().postNotificationName("RefreshData", object: nil)


    _ = self.navigationController?.popToViewController(self.navigationController?.viewControllers[i] as! LoanViewController, animated: true)
    break
    }

    }

    展开全文
  • APP开发的过程中会遇到跳转问题,我们大部分是调回上一个页面,可所有时候也会遇到跳转到指定页面的需求,苹果给我们提供了几种跳转方式 1.退出跟视图控制器 popToRootViewControllerAnimated:(BOOL)animated; ...

    APP开发的过程中会遇到跳转问题,我们大部分是调回到上一个页面,可所有时候也会遇到跳转到指定页面的需求,苹果给我们提供了几种跳转方式

    1.退出到跟视图控制器

    popToRootViewControllerAnimated:(BOOL)animated;


    2.返回到上个页面

    popViewControllerAnimated:(BOOL)animated;


    3.返回到指定位置

    popToViewController:(UIViewController *)viewController animated:(BOOL)animated;

    但是当我们直接用这个方法的时候会导致程序崩溃,提示

    Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.
    推出的视图控制器不存在,那我们应该怎么做呢,问题是压入栈了,我们可以去栈内找

    for (UIViewController *controller in self.navigationController.viewControllers) {
            if ([controller isKindOfClass:[TXHMessageController class]]) {
                TXHMessageController *messageVC =(TXHMessageController *)controller;
                [self.navigationController popToViewController:messageVC animated:YES];
            }else{
                [self popToPreviousView];
            }
        }
    


    展开全文
  • iOS 导航pop到指定页面

    2016-09-13 01:13:22
    一般导航条pus的时候是将新的页面压在老的页面上面,老的页面是被存储起来的所以,返回的时候就要把压在存储里面的viewController给释放出来,而不是继续push 所以要用到pop,下面简单的介绍pop到指定页面 ...

    一般导航条pus的时候是将新的页面压在老的页面上面,老的页面是被存储起来的所以,返回的时候就要把压在存储里面的viewController给释放出来,而不是继续push 所以要用到pop,下面简单的介绍pop到指定页面


    swift 

     if self.navigationController?.viewControllers.count > 3

                        {

    //这边跳到第几页自己定

                            let popVC = self.navigationController?.viewControllers[1]

                                 self.navigationController?.popToViewController(popVC!, animated: true)

                        }



    展开全文
  • pop到指定页面

    2015-11-04 15:10:17
    navigationController在pop时,指定pop到某个页面,这个页面要在navigationController栈里有的  for (UIViewController *temp in self.navigationController.viewControllers) {  if ([temp ...
  • 第一个,返回指定页面 [self.navigationControllerpopToViewController:[[AuthenticationCodeVCalloc]init]animated:YES]; 还有一种,  UINavigationController *navVC =self....
  • 之前用OC代码写过PUSH和POP的转场动画,闲来无事,将其转换成Swift语言,希望对大家有帮助,转载请注明。。。。如何实现PUSH和POP的转场动画?首先,创建一个NSObject的类,分别用来实现PUSH和POP的动画效果创建PUSH...
  • 需要返回到指定页面初始化: BUYMyGoodsControl *buyVC=[[BUYMyGoodsControl alloc] init];   for (BUYMyGoodsControl * controller in self.navigationController.viewControllers) {
  • ZNWNeedsRegistrationDetailViewController *registrationDetailVC = [[ZNWNeedsRegistrationDetailViewController alloc] init]; EditPersonInFoViewController *editPersonInFoVC = [[EditPersonInFoViewCo
  • swift push和pop

    2018-02-06 15:54:37
    push跳转到指定页面 self.navigationController?.pushViewController(FoundNewsViewController(), animated: true) pop返回上一个页面 self.navigationController?.popViewController(animated: true)
  • 关于ios中 viewcontroller的跳转问题,其中有一种方式是采用navigationController pushViewController 的方法,比如我从主页面跳转了一级页面,又从一级页面跳转了二级页面,然后从二级页面跳转了三级页面,...
  • ios中 viewcontroller的跳转问题,其中有一种方式是采用navigationController pushViewController 的方法,可能会从主页面跳转了一级页面,又从一级页面跳转了二级页面,然后从二级页面跳转了三级页面,依次类...
  • 在界面之间跳转的时候,返回到指定界面的方法,这是一个非常实用的方法,也符合了很多种情况需求,个人感觉很棒。 先举一个简单的例子说明一下,比如你从A界面跳转B界面,然后再返回的时候,你不想从B界面跳转...
  • HomeViewController:为你想要跳转的界面HomeViewController *homeVC = [[HomeViewController alloc] init]; UIViewController *target = nil; for (UIViewController * controller in self...
  • 先不使用动画直接pop回根视图(或者是使用dismiss) [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:NO]; 然后切换指定的界面,...
  • 首先要在appDelegate里添加导航视图控制器navigationColler func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?...
  • [self.navigationController popToRootViewControllerAnimated:YES]; //最上一层 [self.navigationController popToViewController: [self.navigationController.viewControllers objectAtIndex: ([self....
1 2 3 4 5 ... 20
收藏数 748
精华内容 299