Swift:UICollectionView + Custom Segue会产生问题

时间:2017-10-27 08:46:22

标签: swift xcode uicollectionview segue

在以下应用程序中,我使用的是UICollectionView。从我的SQL-Server下载每个单元格(字符串)的文本。这非常有效。但不知何故,我的应用程序有时看起来应该如此,但有时候看不到(这种情况发生在模拟器中,也发生在本机设备上)。 我想这与我正在使用的自定义segue有关,当点击设置按钮(右下)时。

@IBAction func settingsButton(_ sender: UIButton) {
    // in order to prevent an exception, you have to add an Identity in Main.storyboard
    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)

    // instantiate view controller by storyboard
    let nextViewController = storyBoard.instantiateViewController(withIdentifier: "SettingsViewController") as! SettingsViewController

    // custom segue
    self.performSegue(withIdentifier: "SegueToRight", sender: sender)

    // pass email
    nextViewController.email = self.email

    // switch view controller
    self.present(nextViewController, animated:true, completion:nil)
}

显示右:

显示错误:

1 个答案:

答案 0 :(得分:0)

您的问题可能是由于您使用的是两种不同的演示方法,seguepresent

尝试删除self.present(nextViewController, animated:true, completion:nil),因为performSegue函数已经为您处理了转换。

此外,nextViewController.email = self.email应设置为之前 performSegue,以确保数据能够正确传递给下一个控制器。

评论更新

您需要将代码分成两部分。在@IBAction内调用performSegue来电:

@IBAction func settingsButton(_ sender: UIButton) {
    // custom segue
    self.performSegue(withIdentifier: "SegueToRight", sender: sender)
}

然后覆盖 prepareForSegue:sender:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let nextViewController = segue.destination as! SettingsViewController
    nextViewController.email = self.email
}