我有一个UIViewController,我需要传递信息。为此我已经创建了另一个UIViewController,我有一个CollectionView。
因此,当用户点击CollectionView中的元素时,它应关闭视图并返回主UIViewController。
所以我设法让它在Navigaiton栏中使用按钮。
但是当我放置相同的代码时
" dismissViewControllerAnimated(true,completion:nil)"
在didSelectItemAtIndexPath中它不起作用。
我曾尝试在单元格中放置一个按钮,但结果仍然相同,除此之外一切正常。
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.exercisesNames.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cellexercises_insert", forIndexPath: indexPath) as! Insert_ExerciseCollectionViewCell
cell.insert_exerciseImage?.image = self.exercisesImages[indexPath.row]
cell.insert_exerciseLabel?.text = self.exercisesNames[indexPath.row]
cell.insert_exercisesHardnessImg?.image = self.exercisesHardnessImg[indexPath.row]
return cell
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
exercise_label="\(exercisesNames[indexPath.row])"
exercise_image="\(exercises_Exervise_Row_Names[indexPath.row])"
//self.dismissViewControllerAnimated(true, completion: nil)
closeMe()
}
@IBAction func done(sender: AnyObject) {
closeMe()
}
func closeMe(){
dismissViewControllerAnimated(true, completion: nil)
}
答案 0 :(得分:1)
我不确定因为上下文,但我想您正在尝试解除collectionViewController,但它没有以模态方式呈现,因此您可以尝试:
self.navigationController?.popViewControllerAnimated(true)
而不是dismissViewControllerAnimated(true, completion: nil)
如果它实际上是以模态方式呈现的,请确保您的collectionViewController嵌入在UINavigationController中。
答案 1 :(得分:0)
如果以模态方式呈现,则需要在第一个视图控制器中实现展开segue函数。
@IBAction func unwindToMainViewController(segue: UIStoryboardSegue) {
}
完成后,转到故事板并按控制 - 从第二个视图控制器上的视图控制器图标拖动到主视图控制器的退出图标,您可以在左侧的栏中看到该图标。然后它会让你选择你的展开segue。
选择您的segue并为其设置segue标识符。
对于didSelectItemAtIndexPath
功能,您必须拨打您的segue。
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("segueIdentifier", sender: self)
}
要将对象发送到主视图控制器,可以在第二个视图控制器中使用以下功能。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "segueIdentifier") {
let mainViewController = (segue.destinationViewController as mainViewController)
mainViewController.classVariable = newVariableValue
}
}
有关详细信息,请参阅: