相关疑难解决方法(0)

什么是Unwind segues以及如何使用它们?

iOS 6和Xcode 4.5有一项称为"Unwind Segue"的新功能:

展开segue可以允许转换到故事板中的现有场景实例

除了Xcode 4.5发行说明中的​​这个简短条目之外,UIViewController现在似乎有几个新方法:

- (BOOL)canPerformUnwindSegueAction:(SEL)action fromViewController:(UIViewController *)fromViewController withSender:(id)sender
- (UIViewController *)viewControllerForUnwindSegueAction:(SEL)action fromViewController:(UIViewController *)fromViewController withSender:(id)sender
- (UIStoryboardSegue *)segueForUnwindingToViewController:(UIViewController *)toViewController fromViewController:(UIViewController *)fromViewController identifier:(NSString *)identifier
Run Code Online (Sandbox Code Playgroud)

展开segue如何工作以及它们可以用于什么?

ios uistoryboard ios6

579
推荐指数
5
解决办法
22万
查看次数

isBeingDismissed未在viewWillDisappear中设置:

我有一些代码要清理viewWillDisappear:,我只想在视图移回父视图控制器时使用.

- (void)viewWillDisappear:(BOOL)animated
{
    if ([self isMovingFromParentViewController] || [self isBeingDismissed]) {
        NSLog(@"isMovingFromParentViewController or isBeingDismissed");
        // clean up
    }
    [super viewWillDisappear:animated];
}
Run Code Online (Sandbox Code Playgroud)

视图可以以两种方式呈现:它可以由导航控制器推动,或者呈现为模态视图控制器(来自相同的导航控制器).如果它被按下,然后弹出(按下后退按钮),我的清理代码就会运行.如果它呈现为模态视图控制器,然后被解雇,则代码不会运行.

我这样解雇:

[rootViewController dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

我的问题是:isBeingDismissed当我解雇我的视图控制器时为什么没有设置?

iphone uiviewcontroller modalviewcontroller ios

10
推荐指数
3
解决办法
6968
查看次数

在解除显示的VC时,呈现视图控制器会丢失子视图

我在玩两个以直接方式交互的视图控制器时遇到了一些麻烦:

homeViewController使用addTask按钮显示待办事项列表.addTask按钮将启动另一个viewController,作为用户填写的"表单".

然而,在打电话

 self.dismissViewControllerAnimated(true, completion: nil);
Run Code Online (Sandbox Code Playgroud)

呈现的视图控制器内部我返回到我的主页,但是它是空白的,除了可以看到故事板上的最高级别视图(即覆盖整个屏幕的视图)之外,似乎什么都看不见.

我的所有视图,场景等都在故事板中设置了自动布局.我已经浏览了Stack Overflow,这导致我玩自动调整大小的子视图参数,即:

self.view.autoresizesSubviews = false;
Run Code Online (Sandbox Code Playgroud)

无济于事.我要么修复自动调整大小参数错误(在错误的视图中,或者只是设置错误),或者有其他问题.

提前致谢

编辑:

我将VC呈现如下:

    func initAddNewTaskController(){
    let addNewTaskVC = self.storyboard?.instantiateViewControllerWithIdentifier("AddNewTaskViewController") as! AddNewTaskViewController;
    self.presentViewController(addNewTaskVC, animated: true, completion: nil);
}
Run Code Online (Sandbox Code Playgroud)

EDIT2:

虽然我接受使用委托或解开segue确实可以规避我遇到的问题(如campbell_souped建议的那样),但当我解除导致空白屏幕的视图控制器时,我仍然不明白从根本上发生了什么.

我理解调用dismissViewControllerAnimated会传递给呈现视图控制器(在本例中是我的homeViewController).由于我不需要做任何解雇前或解雇后的配置,因此我认为(在我看来)代表的使用是不必要的.

我目前的想法是,出于某种原因,当我调用时

dismissViewControllerAnimated(true, completion:nil);
Run Code Online (Sandbox Code Playgroud)

在我的addNewTaskViewController中,它实际上是释放我的homeViewController.我希望有人可以告诉我关于我不理解视图控制器如何呈现/解除的确切含义.

ios

1
推荐指数
1
解决办法
438
查看次数