Ios 在两个ViewController之间传递数据时出错
在将数据从一个ViewController传递到另一个ViewController后,出现以下错误Ios 在两个ViewController之间传递数据时出错,ios,swift,tableview,segue,Ios,Swift,Tableview,Segue,在将数据从一个ViewController传递到另一个ViewController后,出现以下错误 no data eventStruct(title: What are we gonna do today?, date: 2017-07-13, location: House3, description: Hello beautiful people!) 2017-06-15 22:01:05.697 RUC-App 1.0[48760:5792168] Warning: Attempt to
no data
eventStruct(title: What are we gonna do today?, date: 2017-07-13, location: House3, description: Hello beautiful people!)
2017-06-15 22:01:05.697 RUC-App 1.0[48760:5792168] Warning: Attempt to present <RUC_App_1_0.EventViewController: 0x7fb686636460> on <RUC_App_1_0.NewsfeedViewController: 0x7fb68662e6a0> whose view is not in the window hierarchy!
第二个视图控制器的代码:
import UIKit
class EventViewController: UIViewController {
var data: eventStruct?
@IBOutlet weak var titleLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
print (data ?? "no data")
self.titleLabel.text = self.data?.title
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
您不应该同时触发和手动分段
试试这个:
删除您的didSelectRowAt
函数(或将其注释掉),并将prepare()
替换为:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "showDetails"){
let secondViewController = segue.destination as? EventViewController
if let idx = tableView.indexPathForSelectedRow {
secondViewController?.data = posts[idx.row]
}
}
}
您不应该同时触发和手动分段
试试这个:
删除您的didSelectRowAt
函数(或将其注释掉),并将prepare()
替换为:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "showDetails"){
let secondViewController = segue.destination as? EventViewController
if let idx = tableView.indexPathForSelectedRow {
secondViewController?.data = posts[idx.row]
}
}
}
您是否已将showDetails
segue连接到tableviewcell,并在didSelectRowAt
中直接调用它?是的。我就是这样做的。您是否将showDetails
序列连接到您的tableviewcell,并直接在didSelectRowAt
中调用它?是的。我就是这样做的。这解决了问题。非常感谢。这解决了问题。非常感谢。