如何在条件展开转场中传递数据?

2023-12-26

我尝试建立一个RSS阅读器。在“添加提要”页面上,如果我点击“添加”按钮,我希望检查提要是否已成功添加。如果添加了,则触发unwind segue,并返回主页。如果没有添加,则停留在当前页面。

我知道我可以在“添加”按钮上构建 IBAction,并检查提要是否已添加。然而,为了添加提要,我需要满足两个要求。

首先,在解析 url 后,我需要知道解析结果是否可以生成 feed。为了解析 url,我需要使用 mainViewController 中定义的方法。

其次,我需要检查提要是否已经存在。如果此 Feed 已存在,请勿添加。为了检查这一点,我需要从 mainViewController 获取提要数据。

目前我使用prepareForSegue将数据从主viewController传递到该视图。但对于条件展开转场,我不知道如何传递数据并检查提要是否已存在。因为prepareForSegue仅在segue将被触发时使用。如果没有触发segue,我无法检查条件。

除了通过segue之外,还有其他方法可以从其他视图传递数据吗?

我不了解objective-C,所以如果你能快速给我一些解决方案会更好。 :)


就像Schemtrical所说,使用委托是访问MainViewController中的方法的一种简单方法。

既然您将其标记为 Swift,我还将为您提供一个 Swift 中委托的小示例。

首先创建一个协议:

protocol NameOfDelegate: class {     // ":class" isn't mandatory, but it is when you want to set the delegate property to weak
    func someFunction() -> String    // this function has to be implemented in your MainViewController so it can access the properties and other methods in there
}

在你的 MainViewController 中你必须添加:

class MainViewController: UIViewController, NameOfDelegate {

    // your code

    @IBAction func button(sender: UIButton) {
        performSegueWithIdentifier("toOtherViewSegue", sender: self)
    }

    fun someFunction() -> String {
        // access the other methods and return it
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "toOtherViewSegue" {
            let destination = segue.destinationViewController as! OtherViewController
            destination.delegate = self
        }
    }
}

最后一步,您必须添加委托的属性,以便您可以与其“交谈”。就我个人而言,我认为这个属性是两个视图控制器之间的某种门,以便它们可以相互通信。

class OtherViewController: UIViewController {

    weak var delegate: NameOfDelegate?

    @IBAction func button(sender: UIButton) {
        if delegate != nil {
            let someString = delegate.someFunction()
        }
    }
}

我假设您使用了 segue 来访问其他 ViewController,因为您在帖子中提到了它。这样,您就可以与 MainViewController “对话”。

EDIT:

至于放松。这也可以通过 segue 来完成。

  1. add: @IBAction func unwindToConfigMenu(sender: UIStoryboardSegue) { }到你的MainViewController。
  2. 在故事板的顶部有 3 个图标OtherViewController。单击内部有正方形的黄色圆形,以确保选择了 ViewController 而不是内部的某些元素。
  3. 控制拖动(或鼠标右键拖动)从同一个内部有正方形的黄色圆形图标到最右边的红色正方形图标。这样做会弹出一个菜单,您可以在其中选择展开转场。
  4. 单击您刚刚创建的新 Segue。给它一个标识符,如“backToMain”
  5. 添加类似于下面代码的内容OtherViewController

看来我不能再发布任何代码了? :o 稍后添加。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在条件展开转场中传递数据? 的相关文章

随机推荐

  • 如何确定 zurbs Foundation 的 sass 版本中的间距宽度

    应该比较简单 我无法安静地弄清楚 我有这个 parent include grid row main include grid column 8 sidebar include grid column 4 元素 main 和 sidebar
  • 使用哪种 HTTP 方法下载文件?

    在我的网站中 用户可以下载他们的文件 但文件是使用 PHP 生成的 那么我应该使用什么 HTTP 方法来发送作为文件附件的下载请求呢 获取还是发布 GET 用于被动检索文件 POST 用于altering服务器上的信息 这是从客户端来看的
  • ActiveSupport::MessageVerifier::InvalidSignature

    我正在尝试创建一个表单 用户可以在其中编辑现有视频标题和说明 发送 PATCH 请求时 出现以下错误 StackOverflow 上的另一篇文章说 如果发送字符串而不是对象 则会导致错误 但当我控制台记录它时 我看到一个对象 有什么想法吗
  • Socket.Poll 在不同机器上的延迟差异很大

    我继承了一个使用套接字的 net 2 0 客户端应用程序 服务器在 iSeries 上运行 我的计算机尝试使用客户端应用程序但遇到延迟 在遇到 滞后 的计算机上 我确定 Socket Poll 方法花费的时间更长 我认为 我是这样知道的 M
  • 哪个 OJDBC 驱动程序适用于 Java 6?

    我们当前使用的是 ojdbc14 jar 我们应该使用 ojdbc6 jar 吗 更新 正在使用Oracle 10g 如果您使用 java6 则可以 并且应该 使用 ojdbc6 jar 如果它与您的数据库兼容 资源 oracle com
  • 替换照片中除现有黑白像素之外的所有颜色

    我想要一种将照片的所有像素更改为白色的方法 除了照片中已有的白色或黑色像素之外 我尝试使用 PIL 但找不到它 我想要将照片的所有像素更改为白色的方法 除了照片中已经存在的白色或黑色像素 所以基本上你想将除黑色之外的所有像素更改为白色 对吧
  • SQL Server:存储过程变得非常慢,原始 SQL 查询仍然非常快

    我们正在努力解决一个奇怪的问题 当原始 SQL 执行得相当快时 存储过程变得非常慢 我们有 SQL Server 2008 R2 Express Edition SP1 10 50 2500 0 其中包含多个数据库 一个数据库 大小约为 7
  • Grails - 具有级联删除的同一类的多个belongsTo

    这是针对 Grails 用户的 我在 grails 用户邮件列表上询问过这个问题 但我想既然我已经为此奋斗了几天 我应该撒尽可能广的网 我在尝试建模两个人之间的关系时遇到一些困难 另一个对象 不同类型 中相同类型的对象引用 两个物体 作为我
  • Java虚拟机如何实现“happens-before”内存模型?

    Java 的内存模型基于 先于发生 关系 该关系强制执行规则 但也允许在缓存失效方面优化虚拟机的实现 例如以下情况 thread A private void method code before lock synchronized loc
  • 如何修复 Python Mechanize 中的编码?

    这是示例代码 from mechanize import Browser br Browser page br open http hunters tclans ru news php readmore 2 br form br forms
  • ASP MVC 3 中一个视图中的两个模型

    我有 2 个型号 public class Person public int PersonID get set public string PersonName get set public class Order public int
  • 从 GCP 设置文档运行“Hello Cloud Run with Python”时,日志中出现“[CRITICAL] WORKER TIMEOUT”

    继教程在这里 https codelabs developers google com codelabs cloud run hello python3我有以下2个文件 app py from flask import Flask requ
  • 如何根据其他列的条件用另一列的值填充列?

    假设我们在 pandas 中有一个数据框 如下所示 col1 col2 col3 col4 22 Nan 23 56 12 54 22 36 48 Nan 2 45 76 32 13 6 23 Nan 43 8 67 54 56 64 16
  • 如何在Vue中加载外部CSS

    我创建了一个Vue项目与Typescript具有类风格的组件 我需要包含一些外部 CSS 文件 例如来自Amazon S3 CSS 似乎没有加载 在网络部分我可以看到它 我建议你使用preprocessor Install SASS npm
  • 如何让 wpf 工具包数据网格在绑定到数据集时显示新行

    有没有办法获取wpf工具包DataGrid当绑定到 a 时显示新行DataSet 换句话说 我有一个DataGrid 我已经设置了它的ItemsSource to a DataTable 一切似乎都工作正常 除了我无法让网格显示我添加到的行
  • 使用 asynctask 加载图像时 Android 列表视图中的奇怪行为

    我希望任何人都可以帮助我解决我遇到的 ListView 问题 昨天我一直在用头撞铁墙 因为我不知道问题出在哪里 这本来不是我的项目 这使得它变得更加困难 我有一个列表视图 我想在其中加载联系人行 在每行的左侧 我想 下载 异步加载图像 为此
  • 在 OpenCV 3.0 中计算密集 SIFT 特征

    从 3 0 版本开始 DenseFeatureDetector 不再可用 有人可以告诉我如何在 OpenCV 3 0 中计算 Dense SIFT 特征吗 我在文档中找不到它 预先非常感谢您 您可以传递一个列表cv2 KeyPoints t
  • 为什么服务器端Javascript没有被广泛使用? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 拦截并过滤HTTP请求

    我想拦截 嗅探传入的 HTTP 请求并过滤 修改它们的内容 在它们到达应用程序之前 Fiddler 似乎有这个功能 但为了集成和可移植性 我宁愿有一些 Java C 库来做到这一点 例如 JPCAP 它拦截 IP 数据包 但是 如上所述 我
  • 如何在条件展开转场中传递数据?

    我尝试建立一个RSS阅读器 在 添加提要 页面上 如果我点击 添加 按钮 我希望检查提要是否已成功添加 如果添加了 则触发unwind segue 并返回主页 如果没有添加 则停留在当前页面 我知道我可以在 添加 按钮上构建 IBActio