【问题标题】:Error While sending Data发送数据时出错
【发布时间】:2016-12-01 10:26:54
【问题描述】:

我已经制作了自定义 TableCell 并将 Tableview 添加到 UIViewController。我想将数据从UITableViewController 的一个视图发送到我已经实现tableViewUIViewController。我收到此错误:

【问题讨论】:

  • 请正确描述。我很困惑你在说什么,并附上了其他代码。
  • 如上图所示,我在将数据从一个视图发送到另一个视图时遇到了特定错误。我要发送的数据是 NSArray 数据类型。

标签: ios swift uitableview uiviewcontroller segue


【解决方案1】:

在您的 Storyboard 中,您的 Segue 在 UITableViewCellViewController 之间连接,因为您将发送者作为 UITableViewCell。要解决此问题,只需删除 Segue 并从源 ViewController 到目标 ViewController 创建一个,然后设置相同的 segue 标识符,然后一切都将以您想要的方式工作。

【讨论】:

  • 我正在将数据从 UITableViewController 发送到名为 BookingHistoryViewController 的 UIViewController。 BookingHistoryViewController 是 UIView 的类,我在其中添加了 Table View 以制作 CustomCells 并且我使用了 BookingHistoryTableViewCell 的 CustomCell ,您可以在方法 prepareForSegue 中看到这一点
  • @Ronit 我的意思是,在情节提要中,您的 segue 在 tableCell 和 ViewController 之间连接,而不是您需要在两个 ViewController 之间创建。
  • @Ronit 欢迎朋友 :)
【解决方案2】:

你的问题还不清楚。虽然我给你的想法。 您必须使用闭包、委托或通知模式

假设我从view1 to view2 发送消息。使用简单的流程发送数据。但是如果你从view2 发送到 view1 -> 关闭view2 :-> 将闭包定义为

  var sendDataToBackController: ((String)-> ())?

@IBAction func DataSendFrom2ndVCTo1stVC(_ sender: AnyObject) {
           if let handler = sendDataToBackController{
               handler("Message From ViewController3 to ViewController2")
              }


            _ = self.navigationController?.popViewController(animated: true)
        }
    }

view1 :->

if let vc = self.storyboard?.instantiateViewController(withIdentifier: "ViewController2") as? ViewController2{
                vc.dataFrom1StVC = "message send from 1st VC"
                  vc.sendDataToBackController = {
                message in
                print(message)
               }                
               self.navigationController?.pushViewController(vc, animated: true)
            }
        }

请尽快在上述过程中调用闭包,即将数据从 view2 传递回 view1,并在上面尽快定义您创建 view2 实例的闭包。我只给出想法。如果您想获取详细代码,请详细说明您的问题。 希望对你有帮助。

【讨论】:

  • 非常感谢您的帮助,您能告诉我如何添加代码,因为 stackOverFlow 没有太多字符
  • 您可以在 stackOverFlow 中添加您喜欢的代码。如果你想像我上面写的那样标记代码,首先你把代码写在答案框中,就像你写的那样,然后选择你想要标记的代码,然后按 (control + K) 键。如果我的回答对您有帮助,请检查我的回答并投票。如果有任何困惑,然后问我。谢谢
猜你喜欢
  • 1970-01-01
  • 2015-08-25
  • 1970-01-01
  • 2021-03-12
  • 2012-07-15
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
相关资源
最近更新 更多