首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >popViewController iphone

popViewController iphone
EN

Stack Overflow用户
提问于 2011-12-26 19:00:21
回答 3查看 2.9K关注 0票数 0

我可以在不使用这样的代码的情况下将视图控制器从导航控制器堆栈中移除吗

代码语言:javascript
复制
[mynavigationController popViewControllerAnimated:YES];

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-26 22:17:19

@rishi几乎做到了。您需要一个可变数组来进行编辑。

代码语言:javascript
复制
NSMutableArray *activeControllerArray = 
    [self.navigationController.viewControllers mutableCopy];

[activeControllerArray removeObjectAtIndex:indexToRemove];
// If you still have a handle to the viewcontroller you could use other methods like removeObject:

self.navigationController.viewControllers = activeControllerArray;

来自UINavigationController docs的代码片段

视图@property(非原子,复制) NSArray *视图控制器

..。将新的视图控制器数组分配给此属性等效于在动画参数设置为NO.的情况下调用setViewControllers: animated :方法

票数 1
EN

Stack Overflow用户

发布于 2011-12-26 19:06:02

我不知道如何从导航控制器的视图控制器中删除视图控制器,但是如果您想在返回时跳过特定的视图,那么可以尝试使用这个视图

代码语言:javascript
复制
-(void)goToMainCategoryView
{
    id object = nil;

    for (UIViewController *viewControl in self.navigationController.viewControllers)
    {
        if(viewControl.view.tag == 0)
        {
            object = viewControl;
        }
    }
    [self.navigationController popToViewController:object animated:YES];
}
票数 1
EN

Stack Overflow用户

发布于 2011-12-26 20:24:05

您可以执行以下操作-

编辑-

代码语言:javascript
复制
NSMutableArray *activeControllerArray =  [self.navigationController.viewControllers mutableCopy];
[activeControllerArray removeObjectAtIndex:1];

self.navigationController.viewControllers = activeControllerArray;

此外,对于删除,您可以创建自定义逻辑,如使用isKindOfClass方法检查特定的控制器,然后删除该控制器或您想要的任何东西

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8635107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档