在以下应用程序中,我使用的是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)
}
显示右:
显示错误:
答案 0 :(得分:0)
您的问题可能是由于您使用的是两种不同的演示方法,segue
和present
。
尝试删除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
}