以编程方式展开 segue

2023-12-20

我正在显示一个带有 UITableView 控件的 UIView。我通过调用 PerformSegueWithIdentifier 使用 Show Segue 显示此视图。在调用 segue 的模块中,我添加了一个要在展开时使用的函数,以便在从 segue 返回时从视图中检索一些数据。现在,我有一个“完成”按钮,它连接到调用者的函数,这样我就可以在 segue 展开时检索数据。我不想在点击“完成”按钮时执行所有这些操作,而是希望在 UITableView 中选择一个项目时执行此操作。

在 tableView(,willSelectRowAtIndexPath) 中,我尝试调用 popViewControllerAnimated。第二个 UIView 确实关闭并将我带回调用 UIView,但未调用展开函数。

我知道如何使用 Exit 从完成按钮设置展开,但我不知道在点击 UITableView 中的一行时如何执行此操作。

这是我用来执行 segue 的代码:

    @IBAction func fromButtonTap(sender: AnyObject) {
    currentButton = sender.tag

    self.performSegueWithIdentifier("UnitsSegue", sender: self)
}

下面是当 segue 展开时执行的代码:

@IBAction func returnFromUnitSelection(segue: UIStoryboardSegue) {
    var buttonToSet: UIButton!
    var unitsToSet: UnitData!

    fromLabel.text = "0"
    toLabel.text = "0"

    if let unitsSelectionViewController = segue.sourceViewController as? UnitSelectionController {
        if currentButton == 0 {
            fromUnitData = unitsSelectionViewController.selectedUnit
            buttonToSet = fromButton
        }
        else {
            toUnitData = unitsSelectionViewController.selectedUnit
            buttonToSet = toButton
        }

        setButtonText(buttonToSet, firstLine: unitsSelectionViewController.selectedUnit.unitCode, secondLine: unitsSelectionViewController.selectedUnit.unitName, firstLineFontSize: 15, secondLineFontSize: 11)
    }
}

这是我用来关闭第二个 UIView 的代码:

    func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {
    selectedUnit = temperatures[indexPath.row]
    self.navigationController?.popViewControllerAnimated(true)

    return indexPath
}

当我点击“完成”时,展开代码确实会执行。但是当我在表中选择一个项目时什么也没有发生。


You can create unwind segue for entire view controller. To do this drag segue from view controller objet to exit object. enter image description here

Segue 创建后,它会列在文档大纲中。

选择它并在属性检查器中给它一个标识符。然后,当 tableview 选择一个单元格时,在代码中像任何其他正常的 segue 一样执行此 segue。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let title = tableView.cellForRowAtIndexPath(indexPath)?.textLabel?.text

    performSegueWithIdentifier("backToViewController1", sender: title)
}

然后覆盖prepareForSegue将数据传递到第一个视图控制器的方法。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let identifier = segue.identifier where identifier == "backToViewController1",
       let destination = segue.destinationViewController as? ViewController,
           selectedTitle = sender as? String {
        destination.selectedCountryTitle = selectedTitle
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式展开 segue 的相关文章

  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f
  • Parse - 使用 Swift 进行子类化?

    我正在尝试让标准子类与 swift 一起使用 桥接标头 h import
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self
  • Xcode MyProjectName-Bridging-Header.h 不存在

    我想开始在我的 Objective C 项目中使用 Swift 所以我添加了一个快速类 import Foundation objc class System NSObject objc func printSome println Pri
  • 具有非零“内容”的 QTMovieLayer 的 iOS 替代品?

    背景 QTKit QuickTime Kit 是一个来自 10 3 天的 Mac 框架 在 10 5 中添加了一些层 例如QTMovieLayer QTMovieLayer 的好处之一是您可以使用常规访问电影内容content图层上的属性并
  • XCode 调试 - 我可以绕过反汇编代码的单步执行吗

    调试项目时 在 XCode 中设置断点后 我将开始单步执行代码 然后我会遇到反汇编代码 我认为这些代码是对没有可用源代码的各种框架的调用 这是一个正确的假设吗 有没有一种方法 可能通过我尚未找到的项目设置 来抑制此汇编代码的显示 而不必单步
  • IOS Coredata 兼容 IOS 9 和 ios 10

    您好 我正在开发一个适用于 IOS 10 和 9 xcode 8 的应用程序 创建新实体对象的正确方法是什么 新的IOS 10有这个代码 var newEvent Event context context 我们如何让这段代码同时适用于 I
  • 如何比 CGContextStrokePath 更快地渲染线条?

    我正在使用 CGContextStrokePath 绘制约 768 个点的图表 问题是 每一秒我都会得到一个新的数据点 从而重新绘制图表 目前 这个已经很繁忙的应用程序占用了 50 的 CPU 图形绘制是在UIView 中的drawRect
  • ObjC <-> Swift 桥接和工厂方法

    我想从 Swift 使用一些 Objective C 类 由于超出了这个问题范围的原因 我的班级init方法被标记为不可用 相反 有一个工厂方法 这是我的班级的简化形式 interface MyClass NSObject instance
  • 是否可以使用 iOS SDK 更改 Amazon Cognito 中的用户名?

    正如标题中所写 是否可以更改 Amazon Cognito 用户的用户名 我在文档中找不到任何内容 可以更新preferred username使用 iOS SDK 的 Cognito 用户 使用updateAttributesAPI 调用
  • 删除部分(红色删除按钮),UITableViewController - iOS

    我正在尝试做一个分组的 uitableview 并且我已经激活了编辑选项 我希望用户也能够删除整个部分 而不仅仅是特定行 因此 当您单击 编辑 时 每个表格单元格左侧显示的红色减号按钮也应该显示在各个部分 部分标题左侧 有人知道如何做到这一
  • 在 swift 中设置状态栏的自定义颜色?

    在视图控制器上 我想将状态栏的颜色设置为黑色 但我无法更改它 我为此目的使用下面的代码 func setUpUI self navigationController setNavigationBarHidden true animated
  • 如何在 SwiftUI 中呈现视图而不将其嵌入到当前导航流中?

    我已经完成了日志记录入门 并且需要呈现一个 HomeView 它对之前的导航流程一无所知 var body some View if viewModel isValidated destination else LoadingView 通过
  • 在 macOS 10.14 上键入文本时,NSTextView 光标不出现

    我在 macOS 10 12 Mojave 上使用 NSTextView 观察到一个奇怪的问题 我正在更改 textStorage 属性didChangeText 像这样 self textStorage beginEditing ARTo
  • swift 3.0 中的 Sha 256 加密语法错误

    func SHA256 gt String let data self data using String Encoding utf8 let res NSMutableData length Int CC SHA256 DIGEST LE
  • 使用排序函数按 NSDates 对数组进行排序[重复]

    这个问题在这里已经有答案了 我有一个名为的模型类Event import Foundation import MapKit public class Event let id Int var title String let status
  • Parse 在哪里存储用户会话

    登录代码 PFUser logInWithUsernameInBackground self userTextField text password self passwordTextField text block PFUser user
  • iOS SDK:MapKit MKPolyLine 未显示

    我试图在地图上显示多段线 但该线没有显示 我尝试了很多事情 但注意到似乎有用 我检查了核心数据函数 它正在返回数据 所以这不是问题 它必须是我在地图点创建或地图上绘制的某个地方 我猜 我确信一定是某个地方出了点小错误 但我找不到它 My c
  • 如何在 iOS 5 中使用 Embed Segue?

    iOS 6 引入了 Embed Segue 允许在 Storyboard 中使用自定义容器控制器 有没有办法在 iOS 5 上复制这个 这里的挑战是子视图控制器的视图通常要添加为父视图控制器的某些容器视图的子视图 因为你不能随机进行序列UI
  • iOS 上的本地通知需要用户许可吗?

    我在我的应用程序中使用 UILocalNotification 来安排通知 通知工作正常 并在我需要时显示 我对此没有意见 我没有做任何远程 推送通知 让我想知道的是 我从未见过您通常在多个应用程序中看到的推送通知的著名权限对话框 我什至重

随机推荐