Mein ideales Szenario ist, dass, wenn ich die Taste mit dem Namen "1"/ButtonArray.index[0]
drücken würde es einen segue (Die Segment-ID ist "segueFirst") auf die andere UIViewController
namens "FirstCollectionViewController ". Aber nichts passiert, wenn ich den Knopf drücke.Mein Segment oder Tasten funktioniert nicht in swift
Nun, ich weiß nicht, ob es etwas mit dem Übergang zu tun hat, was ich bezweifle. Ich denke, es hat etwas mit den Tasten zu tun, aber ich kann es nicht herausfinden.
PS: Innerhalb der ButtonArray-Funktion (die das Segment auslösen soll) habe ich versucht performSegueWithIdentifier
aber nichts passiert, wenn ich die Taste drücke.
Ich habe auch versucht presentViewController
aber es gibt mir diesen Fehler
Wert kann nicht vom Typ „FirstCollectionViewController.Type“ zu erwarten Argument Typ „UIViewController“
umwandeln, die ich nicht verstehe, weil ich es als ViewController deklariert habe (In "The new 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)
}
}
}
Der neue VC:
import UIKit
import Foundation
class FirstCollectionViewController : UIViewController {
override func viewDidLoad() {
print("hey")
}
}
Okay, ich habe versucht, was Sie gebeten, aber ich habe einige Fehler wie "Expected Separator" so dass ich es auf "Aktion: "ButtonArray"" statt „Aktion: #selector (ButtonArray (_ :)) ". Aber die Sache ist, dass es immer noch nicht die Aktion auslöst, wenn ich es drücke. Ich habe 2 print-Anweisungen platziert, um zu sehen, ob es die Schaltfläche, die ButtonArray-Funktion oder die if-Anweisung ist Es ist entweder die Schaltfläche oder ButtonArray-Funktion, aber ich weiß nicht, wie es zu beheben :( –
Überprüfen Sie meine Bearbeitung für Selektor-Syntax und für andere Details. –
Wenn ich alle Codezeilen in meinem '' func ButtonArray auskommentiert '' außer meinen print-Anweisungen (weil ich einen SIGABRT-Fehler bei '' var selectedButtonCell = sender.superview als! UICollectionViewCell '' bekommen habe, worüber ich später noch eine weitere Frage stellen könnte) und die Anweisungen in der ButtonArray-Funktion ausgedruckt hat dass die Tasten funktionieren! Es hat nicht das "Inside didSelectItemAtIndexPath" ausgedruckt, aber mein Hauptproblem wurde dank Ihnen gelöst! –