我刚才弄清楚了什么是放松时间,以及如何使用它从 this问题的伟大答案.非常感谢.

但是,这里有一个这样的问题:

我们假设现场B中有一个按钮可以将场景A解开,并且在它之前我想要完成某些操作,例如将数据保存到数据库.我在B.swift中为这个按钮创建了一个动作,但是它似乎直接进入场景A,而不需要指定动作.

任何人都知道为什么或如何做到这一点?

谢谢.

解决方法

您可以按照您所描述的方式执行此操作,或者在您正在展开的viewController中使用prepareForSegue override函数:
@IBAction func actionForUnwindButton(sender: AnyObject) {
    println("actionForUnwindButton");
}

要么…

override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) {
    println("prepareForSegue");
}

第一个例子是你所描述的.该按钮连接到展开区域,并在Interface Builder中连接到按钮操作.按钮操作将在segue操作之前触发.也许您没有将操作连接到界面构建器中的按钮?

第二个例子使您可以访问segue的sourceViewController和destinationViewController,以防万一也很有用(您也可以在目的地视图控制器中的unwind segue的功能中获得这些).

如果要延迟展开顺序,直到按钮的本地动作完成,您可以使用self.performSegueWithIdentifier(或按照wrus61的建议)直接从按钮操作调用segue(而不是在故事板中挂起)

编辑

你似乎有一些怀疑,无论您是否可以通过将您的按钮连接到放卷和按钮操作来实现.我已经建立了一个这样的测试项目:

class BlueViewController: UIViewController {

    @IBAction func actionForUnwindButton(sender: AnyObject) {
        println("actionForUnwindButton");
    }

    override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) {
        println("prepareForSegue");
    }
}


class RedViewController: UIViewController {

    @IBAction func unwindToRed(sender: UIStoryboardSegue) {
        println("unwindToRed");
    }
}

BlueViewController有一个按钮,在故事板中连接到BindH的展开卷展开和动作ForUnwindButton按钮.它也覆盖了prepareForSegue,所以我们可以记录播放顺序.

输出:

actionForUnwindButton
prepareForSegue
unwindToRed

故事板:

编辑2

您的演示项目显示这不工作.不同之处在于您正在使用barButtonItem触发操作,而我正在使用常规按钮. barButtonItem失败,而常规按钮成功.我怀疑这是由于消息传递顺序的差异(以下是推测,但符合观察到的行为):

(A)视图控制器中的UIButton

ViewController的按钮接收到touchupInside
– (1)向该方法发送动作
– (2)向故事板发送segue展开动作
收到的所有消息和按此顺序执行的方法:

actionForUnwindButton
prepareForSegue
unwindToRed

(B)导航控制器工具栏中的UIBarButtonItem

工具栏buttonItem接收touchupInside
– (1)向故事板段发送segue展开动作
– (2)(可能的话)将action发送给viewController的方法

执行顺序是

prepareForSegue
unwindToRed
actionForUnwindButton

prepareForSegue和展开收到的消息.然而actionForUnwindButton消息被发送到nil,因为viewController在segue期间被销毁.所以它不会执行,日志打印

prepareForSegue
unwindToRed

在(B)的情况下,viewController在方法到达之前被销毁,所以不会被触发

所以看来你的选择是…
(a)使用UIButton与动作和放松segue
(b)使用prepareForSegue触发您的操作,这将在viewController仍然存在时触发,并在segue发生之前触发.
(c)不要使用放卷,只需使用按钮操作.在动作方法中,您可以通过在导航控制器上调用popToViewController来“展开”.

顺便说一下,如果在viewController上实现了一个工具栏(不使用导航控制器的工具栏),结果是一样的:首先触发segue,因此按钮操作失败.

ios – 如何在放松行动之前做些什么?的更多相关文章

  1. HTML5 input新增type属性color颜色拾取器的实例代码

    type 属性规定 input 元素的类型。本文较详细的给大家介绍了HTML5 input新增type属性color颜色拾取器的实例代码,感兴趣的朋友跟随脚本之家小编一起看看吧

  2. amazeui模态框弹出后立马消失并刷新页面

    这篇文章主要介绍了amazeui模态框弹出后立马消失并刷新页面,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. 移动HTML5前端框架—MUI的使用

    这篇文章主要介绍了移动HTML5前端框架—MUI的使用的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  4. AmazeUI 模态窗口的实现代码

    这篇文章主要介绍了AmazeUI 模态窗口的实现代码,代码简单易懂,非常不错,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. ios – UIPopoverController出现在错误的位置

    所以我花了一些时间寻找答案,但到目前为止还没有找到任何答案.我正在尝试从UIInputAccessoryView上的按钮呈现弹出窗口.UIBarButtonItem我想显示popover来自定制视图,所以我可以使用图像.我创建这样的按钮:当需要显示popover时,我这样做:但我得到的是:弹出窗口看起来很好,但它应该出现在第一个按钮上时出现在第二个按钮上.然后我发现了这个问题:UIBarButto

  6. ios – 关闭UIBarButtonItem上的突出显示

    我正在尝试使用UIBarButtonItem在我的UIToolbar上添加标题.我使用简单的风格,看起来很好,但我似乎无法让它停止突出显示触摸.“突出显示时触摸”选项不适用于条形按钮项目.有没有快速简便的方法来做到这一点?

  7. 以编程方式调整iOS中的按钮大小

    我正在使用XCode4.6.1并开发iOS6.我在故事板上添加了一个按钮.我在我的实现文件ViewController.m中创建了一个插座:我尝试按如下所示更改按钮b1的属性(在同一个文件中:ViewController.m):当我在模拟器中运行应用程序时,按钮的alpha成功设置为0.5.但是,按钮的位置和大小不会改变.我尝试了各种方法来实现它.然而似乎没有任何作用.我想知道我做错了什么.我对O

  8. 如何在iOS / Swift的顶部导航栏中添加“继续”按钮

    我想在导航栏的右侧添加一个“继续”按钮.如何实现这一目标?我一直在尝试使用UIBarButtonItem上的一些方法,但无法使其正常工作.我迄今为止的最大努力是:但我在第一行遇到错误.它不喜欢“style”参数.我也试过了但没有运气.仍然停留在样式参数上.有任何想法吗?

  9. ios – 将图像添加到界面构建器中的按钮

    我想在我的按钮而不是文本中添加图像.我可以在界面构建器中这样做吗?我可以看一下这个例子吗?

  10. ios – 自定义BackBarButtonItem

    主要原因是您丢失了标准后退按钮滑动动画以更改视图.此外,这意味着我不需要使用自定义按钮或编写自定义方法返回.它只是起作用.希望这也能解决别人的问题,我知道我已经坚持了3个小时!

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部