通过segue传递数据

2024-03-06

我正在使用tableview 控制器和detailView 做简单的iOS 应用程序。我想要的只是通过 segue 传递数据。

这就是它的样子。

我想要的是,您单击“Markíza”,它将打开 URL 视频编号 1,如果您单击“TV JOJ”,它将在播放器中打开 URL 视频编号 2。

我的表格视图单元格:

    struct Program {
        let category : String
        let name : String
    }


   var programy = [Program]()
        self.programy = [Program(category: "Slovenské", name: "Markíza"),
                         Program(category: "Slovenské", name: "TV JOJ")]

Swift 的工作方式与 Obj-C 完全相同,但用新语言进行了重新设计。我没有从您的帖子中获得太多信息,但让我们为每个 TableViewController 命名以帮助我进行解释。

主表视图控制器(这是上面的屏幕截图)

播放器表视图控制器(这是您想要前往的播放器屏幕)

话虽如此,在 PlayerTableViewController 中您需要有一个变量来存储传递的数据。在类声明下有类似的内容(如果您打算将结构存储为单个对象而不是数组:

class PlayerTableViewController: UITableViewController {

    var programVar : Program?

    //the rest of the class methods....

之后,您可以通过两种方式将数据发送到新的 TableViewController。

1)使用prepareForSegue

在 HomeTableViewController 的底部,您将使用prepareForSegue 方法来传递数据。以下是您将使用的代码示例:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {

    // Create a variable that you want to send
    var newProgramVar = Program(category: "Some", name: "Text")

    // Create a new variable to store the instance of PlayerTableViewController 
    let destinationVC = segue.destinationViewController as PlayerTableViewController
    destinationVC.programVar = newProgramVar
    }
}

一旦 PlayerTableViewController 加载,变量就已经设置好并可用

2)使用didSelectRowAtIndexPath

如果需要根据选择的单元格发送特定数据,您可以使用 didSelectRowAtIndexPath。为此,您需要在故事板视图中为您的 Segue 命名(如果您也需要知道如何执行此操作,请告诉我)。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    // Create a variable that you want to send based on the destination view controller 
    // You can get a reference to the data by using indexPath shown below
    let selectedProgram = programy[indexPath.row]

    // Create an instance of PlayerTableViewController and pass the variable
    let destinationVC = PlayerTableViewController()
    destinationVC.programVar = selectedProgram

    // Let's assume that the segue name is called playerSegue
    // This will perform the segue and pre-load the variable for you to use
    destinationVC.performSegueWithIdentifier("playerSegue", sender: self)
}

如果您需要任何其他信息,请告诉我

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

通过segue传递数据 的相关文章

随机推荐

  • 扩展 form.is_valid()

    我正在学习 Django 我偶然发现了一些我需要帮助的东西 forms py class UserForm forms ModelForm password1 forms CharField widget forms PasswordInp
  • 静态与动态绑定逻辑

    我有以下代码 import java lang public class Program public static void main String args B a new A a p 10 a p 10 0 class B publi
  • 在 Python 中将嵌套 JSON 转换为 CSV 文件

    我知道这个问题已经被问过很多次了 我尝试了多种解决方案 但无法解决我的问题 我有一个大的嵌套 JSON 文件 1 4GB 我想将其扁平化 然后将其转换为 CSV 文件 JSON结构是这样的 company number 12345678 d
  • 将已弃用的 preg_replace /e 替换为 preg_replace_callback [重复]

    这个问题在这里已经有答案了 result preg replace lt gt a zA Z0 9 0 1 a zA Z0 9 1 2 iseU CallFunction 1 2 3 4 5 result 上面的代码在升级到 PHP 5 5
  • Chrome devtool本地存储信息未及时更新

    Chrome版本 103 0 5060 134 arm64 Before LocalStorage和SessionStorage跟随页面js运行实时更新 Now 需要手动切换devtools选项卡或者点击devtools左上角刷新按钮来查看
  • 正则表达式类型之间的差异

    我正在读 GNU find的手册页并偶然发现了这个开关 regextype type Changes the regular expression syntax understood by regex and iregex tests wh
  • MsiOpenProduct 是从已安装产品读取属性的正确方法吗?

    给定 MSI 产品代码 我想从已安装的产品中获取升级代码 以及其他属性 我通过调用 MsiOpenProduct 方法 然后调用 MsiGetProductProperty 来尝试此操作 一个 缩写 示例如下所示 MSIHANDLE han
  • Node.js/Express.js 将 POST 请求转发到另一个域

    我的 express js 应用程序在域上有一条路由example1 com router post messages add req res gt let message new Message message title req bod
  • 在上传到服务器之前使用 Canvas 调整 Iphone 图像的大小

    在上传到我们的服务器之前 我们使用 Canvas 在 Iphone IPAD 上调整图像大小 在 iPhone 4S 和 5 上 当使用前置摄像头以横向模式拍摄照片时 调整大小效果很好 当以肖像模式拍摄时 图像会被压缩约 1 4 但当使用后
  • 通过js获取WebView中的位置

    我正在尝试创建 WebView 它将通过 js 获取 GPS 本地化 但是当我单击应该显示本地化的按钮时 在android 4 1 1 模拟器 中 错误代码2 无法启动地理定位服务 在 android 4 1 2 phone 中什么也没有发
  • 如何在 ASP.NET Core 中获取 SignalR Hub 上下文?

    我正在尝试使用以下命令获取集线器的上下文 var hubContext GlobalHost ConnectionManager GetHubContext
  • 如何获取“未过滤”的数组项?

    假设我有一个数组 我通过调用来过滤它myItems filter filterFunction1 并从中获取一些物品 然后我想运行另一个过滤功能filterFunction2与未被选中的其余项目filterFunction1 是否可以获取调
  • 在VHDL中将8位二进制数转换为BCD

    该算法众所周知 您进行 8 次左移 并在每次移位后检查个位 数十位或数百位 每个 4 位 如果它们超过 4 个 则将 3 个添加到该组中 依此类推 这是一个基于流程的解决方案 但不起作用 它会编译 但输出不是我想要的 有什么想法可能是什么问
  • wp_nav_menu 更改子菜单类名称?

    有没有办法改变孩子 ul class sub menu WordPress 本身生成自定义类名 我认识家长 ul 您可以删除或更改名称 menu class gt newname 我找不到答案 我试过 submenu class gt cu
  • 将 APK 发布到 Play 商店时出现构建版本问题

    我看过很多答案 但大多数都已经过时了 我正在尝试使用 Azure DevOps 管道将我的 Android 应用程序发布到 Play 商店 我遇到了 APK 版本代码的问题 出现以下错误 APK指定已使用的版本代码 任何人都知道如何增加存在
  • Tensorflow:每类 IOU

    我正在尝试使用 deeplab 进行语义分割 我想计算每个班级的 IOU 仅针对个人的 IOU 而不是平均 IOU 在 L142 处https github com tensorflow models blob master researc
  • 为什么当 Visual Studio 打开时,智能感知和代码建议停止工作?

    我在 Microsoft 中遇到 Intellisense 问题视觉工作室2012 http en wikipedia org wiki Microsoft Visual Studio Visual Studio 2012 我将在一个项目中
  • 嵌套索引路由未在react-router-dom v6中呈现

    我有一个安装了react router dom v6 的create react app 项目 尝试使用新的索引路由语法 以便我的 HomePage 组件在当前为布局组件提供服务的索引处呈现 当我导航到索引 http localhost 3
  • 在 OkHttp java 中创建承载授权标头

    我需要使用OkHttp3在java中作为HTTP客户端并在请求中发送授权标头 example 授权 持票人 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 eyJpc3MiOiJodHRaswczovL2F1dGg
  • 通过segue传递数据

    我正在使用tableview 控制器和detailView 做简单的iOS 应用程序 我想要的只是通过 segue 传递数据 这就是它的样子 我想要的是 您单击 Mark za 它将打开 URL 视频编号 1 如果您单击 TV JOJ 它将