我的segue或按钮在swift中不起作用

时间:2016-08-04 14:50:14

标签: swift function button uiviewcontroller uicollectionview

我的理想情况是,当我按下名为“1”/ ButtonArray.index[0]的按钮时,它会执行一个segue(segue标识符为“segueFirst”)到另一个名为“FirstCollectionViewController”的UIViewController。 但按下按钮时没有任何反应。

现在,我不知道它是否与segue有关,我怀疑。我认为它与按钮有关,但我无法弄明白。

PS:在ButtonArray函数内部(应该触发segue)我尝试了performSegueWithIdentifier但是按下按钮没有任何反应。

我也试过presentViewController,但它给了我这个错误

  

无法将“FirstCollectionViewController.Type”类型的值转换为预期的参数类型“UIViewController”

我不明白,因为我已将其声明为ViewController(在“新VC”中)。

VC1:

        import Foundation
        import UIKit

        class CollectionViewController: UICollectionViewController {

            var Array = [String]()
            var ButtonArray = [String]()

            override func viewDidLoad() {
              super.viewDidLoad()

              Array =  ["1","2","3","4"]
              ButtonArray = ["1", "2", "3", "4"]


            }

            override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
                return Array.count
            }


            override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
                let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as UICollectionViewCell


                let Label = cell.viewWithTag(1) as! UILabel

                Label.text = Array[indexPath.row]

                let Button = cell.viewWithTag(2) as! UIButton

                Button.setTitle(ButtonArray[indexPath.row], forState: UIControlState.Normal)
                Button.addTarget(self, action: "ButtonArray", forControlEvents:.TouchUpInside)
                return cell

            }

            func ButtonArray(sender : UIButton) {
            print("Not the function")
                var selectedButtonCell = sender.superview as! UICollectionViewCell

                var indexPath = collectionView?.indexPathForCell(selectedButtonCell)
                if indexPath?.row == 0 {
print("Not the if-statement")
                   // presentViewController(FirstCollectionViewController, animated: true, completion: nil)
                   // performSegueWithIdentifier("segueFirst", sender: nil)
                }
            }
    }

新VC:

import UIKit
import Foundation
    class FirstCollectionViewController : UIViewController {

        override func viewDidLoad() {
           print("hey")
        }
    }

1 个答案:

答案 0 :(得分:0)

您忘记在 $importer = Importer::getInstance(Importer::NW); $importer->import($nid); 内使用按钮添加目标,在cellForItemAtIndexPath setTitle方法后添加此行

Button

我认为问题可能是你的按钮框架太小所以尝试实现Button.addTarget(self,action: Selector("ButtonArray:"), forControlEvents: .TouchUpInside) 的{​​{1}}方法,如果没有设置你的ViewController也设置你的collectionView委托,并检查它正在调用didSelectItemAtIndexPath

UICollectionViewDelegate