2014-10-16 67 views
1

我有一个带有不同ViewController的NavigationController。有时我想将ViewController推送到已包含的NavigationController。 在这种情况下,我想从TopController移到现有的,并在顶部和现有顶部之间弹出所有其他ViewController。使用特殊键在NavigationController中查找ViewController

有没有办法给ViewController一个特殊的ID(例如一个NSString),稍后在“NavigationController.viewControllers”中找到他? 或者我应该使用一个单独的词典来管理我的ViewControllers?

或者有更好的方法,我不考虑。

问候

+0

有些视图控制器是同一个类,还是都不同? – shawnwall 2014-10-16 14:57:17

+0

大部分时间是同一班,但内容不同。但是我对每个内容都有一个唯一的ID。 – BHuelse 2014-10-16 15:01:31

回答

1

注:由于视图控制器是同一类,最次

添加每个控制器上strUniqueID性能同时推视图控制器导航控制器不要忘记设置

现在你知道你想要删除其唯一的ID的,所以觉得

//Firstly find your viewController 
for(id viewcontroller in self.navigationController.viewControllers) 
{ 
    //For finding specific viewController use isKindOfClass 
    if(viewcontroller isKindOfClass:[YourViewControllerNameHere Class]) 
    { 
     //Now find UniqueIDHere 
     YourViewController *objYourViewController = (YourViewController *)viewcontroller 
     if(YourViewControllerNameHere.strUniqueID isEqualToString:removeUniqueIDHere]) 
     { 
      //Now pop to YourViewController 
      [self.navigationController popToViewController:viewcontroller animated:YES]; 
      break; 
     } 

    } 
    else if(viewcontroller isKindOfClass:[YourDifferentViewControllerNameHere Class]) //Different ViewControllers here like this 
    { 
     //Now find UniqueIDHere 
     YourDifferentViewController *objYourDifferentViewController = (YourViewController *)viewcontroller 
     if(YourDifferentViewController.strUniqueID isEqualToString:removeUniqueIDHere]) 
     { 
      //Now pop to YourViewController 
      [self.navigationController popToViewController:viewcontroller animated:YES]; 
      break; 
     } 
    } 

} 

试试这个:

//Firstly find your viewController 
for(id viewcontroller in self.navigationController.viewControllers) 
{ 
    //For finding specific viewController use isKindOfClass 
    if(viewcontroller isKindOfClass:[YourViewControllerNameHere Class]) 
    { 
     //Now pop to YourViewController 
     [self.navigationController popToViewController:viewcontroller animated:YES]; 
     break; 
    } 
} 
+1

视图控制器是大多数时间的同一类。 – BHuelse 2014-10-16 15:05:05

+0

@BHuelse检查我的答案,因为我编辑它 – 2014-10-16 15:24:58

4

在您的appDelegate,你可以将所有的ViewController,当你想弹出来电:

[self.navigationController popToViewController:yourViewController animated:YES]; 

或者你可以尝试搜索

NSArray *viewControllers = self.navigationController.viewControllers 
for (UIVIewController *anVC in viewControllers) { 
    if (anVC isKindOfClass:[yourController class] { 
     [self.navigationController popToViewController:anVC animated:YES]; 
     break; 
    } 
} 

希望它能帮助你。

+0

视图控制器是同一类,大多数时间。 – BHuelse 2014-10-16 15:04:15

+0

好吧,所以添加一个自定义属性,如标签或ID,如果(anVC.tag == lookingTag)它是好的。或者对视图控制器存储使用第一种方法。 – 2014-10-16 15:10:27

相关问题