相关疑难解决方法(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万
查看次数

单个函数来关闭所有打开的视图控制器

我有一个应用程序,它是一个单一的视图应用程序 我有一个导航控制器链接到根视图控制器中的所有子控制器.

在每个子控制器中,我都有一个注销按钮.我想知道我是否可以使用一个可以调用的功能,这将解除所有已经打开的控制器,无论当用户按下注销时哪个控制器当前打开?

我的基本开始:

func tryLogout(){
     self.dismissViewControllerAnimated(true, completion: nil)
     let navigationController = UINavigationController(rootViewController: UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("LoginViewController") )
     self.presentViewController(navigationController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找执行此任务的最有效的内存方式.我将我的注销函数放在一个单独的utils文件中,但是我不能使用self.而且我仍然知道要动态解除哪些控制器的问题.

已建议更新 Pop到根视图控制器.所以我的尝试是这样的:

func tryLogout(ViewController : UIViewController){
     print("do something")
     dispatch_async(dispatch_get_main_queue(), {
         ViewController.navigationController?.popToRootViewControllerAnimated(true)
         return
     })
 }
Run Code Online (Sandbox Code Playgroud)

这是实现我追求目标的最佳途径吗?

uiviewcontroller dismiss ios swift

48
推荐指数
6
解决办法
6万
查看次数

iOS 6 - 我可以在解开segue时返回数据吗?

我使用故事板工具创建了一个简单的展开segue.我在要放松的视图中创建了以下事件处理程序:

-(IBAction)quitQuiz:(UIStoryboardSegue *)segue {
    NSLog(@"SEGUE unwind");
}
Run Code Online (Sandbox Code Playgroud)

这会正确触发并解开segue(消息被记录).

当用户退出测验时,我想传回一些数据并且一直在努力解决这个问题.任何人都可以建议吗?

iphone xcode objective-c ios segue

25
推荐指数
4
解决办法
2万
查看次数

如何在swift ios中解雇2个视图控制器?

如何在Swift iOS中关闭2个视图控制器?

以下是我的代码.

@IBAction func backButtonTapped(sender: AnyObject) {
    self.presentingViewController
        .presentingViewController
        .dismissViewControllerAnimated(true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

uiviewcontroller ios swift dismissviewcontroller

9
推荐指数
3
解决办法
2万
查看次数

从内存中分割和清除历史ViewControllers

我有一个iPad应用程序,它有很多屏幕和很多segue选项.目前,我只是使用performSegueWithIdentifier来启动这些segue,我担心的是,当用户执行越来越多的segues时,我占用了大量内存.我见过人们推荐使用函数popToRootViewControllerAnimated:如果使用UINavigationController,但问题是我没有使用它.如何阻止VC的数量激增?应用程序的工作方式,用户不断返回到根VC - 实际上是一个搜索屏幕.因此,如果我需要在需要这样一个segue时清除VC的堆栈,那我认为这将解决我的问题,但我不知道如何解决这个问题.谢谢你的任何建议.

memory-management uiviewcontroller ios segue

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

iOS 6 - 以编程方式触发Unwind Segue什么都不做

在我的应用程序启动时,它以编程方式显示使用segue的LoginViewController.视图控制器以模态方式呈现,过渡设置为交叉溶解.验证成功后,我想通过以编程方式触发展开segue来关闭登录视图.所以我把它添加到我的头文件中:

- (IBAction)unwindSegue:(UIStoryboardSegue *)segue;
Run Code Online (Sandbox Code Playgroud)

现在在IB中,我可以控制 - 从"文件所有者"LoginViewController拖动到"退出"按钮并选择unwindSegue:.这将创建一个手动segue,它会在Connections检查器中显示File文件所有者和Exit按钮.然后我点击IB中场景中新创建的Unwind segue,然后给它起一个名字.如果我单击"转到"按钮进行展开segue操作,它会转到上面提到的声明.

到目前为止一切顺利,我在GCD块中成功验证后触发了这个解开segue:

....
dispatch_async(dispatch_get_main_queue(), ^
{
    [self performSegueWithIdentifier:@"UnwindSegueIdentifier" sender:self];

    [self.spinner removeFromSuperview];
    self.spinner = nil;
});
Run Code Online (Sandbox Code Playgroud)

.....并且当它运行时没有任何反应.微调器确实被正确删除,但没有迹象表明unwind segue正在执行.

执行中的断点unwindSegue:永远不会被击中.没有抛出任何错误.什么都没有写入控制台.标识符是正确的,我三重检查(否则它将失败).

我在这里,这里这里看了答案,但我似乎没有错过任何东西.

我做了什么,虽然注意到,是Xcode认为unwindSegue:挂钩: 联系? 没联系?

我无法从前面的小空圈拖动并将其unwindSegue:链接到"退出"按钮.

任何帮助将不胜感激.

objective-c ios uistoryboard segue uistoryboardsegue

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

xcode以编程方式展开segue

我们怎样才能以编程方式推送xcode unwind segue?

我知道简单的方法是使用故事板并将按钮拉到"退出",但我打算做的是在退出视图之前先运行一些代码.

xcode objective-c ios

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

您可以在没有按钮的情况下以编程方式关闭视图控制器吗?- OS X

我正在尝试以编程方式关闭我的 Cocoa 应用程序中的视图控制器。这可能吗?我在 Objective-C 中看到了一篇关于它的帖子,但我一直没能找到一个适用于 Swift 的帖子。我已经在函数中尝试了这段代码,然后调用了该函数。self.dismissViewController(self)但是它给了我 SIGABRT。我不希望用户必须按下按钮或做任何事情,但只要我“显示”下一个视图控制器就关闭后控制器(我有一个自动按下 IBOutlet 按钮,它会自动将视图发送到下一页,但似乎无法关闭当前页面)。是否有关闭父视图控制器的工作代码?

macos user-interface xcode cocoa swift

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