Ich versuche ein Menü zu zeigen, wenn ich auf die Navigationsleiste klicke (Wie Instagram wenn man mehrere Accounts benutzt). So , das ist, was ich habe:Swift - Button funktioniert nicht über UICollectionView
Die Liste in die Menü-Schaltflächen, die in Code hinzugefügt werden. Mein Problem ist, dass nur die erste Schaltfläche funktioniert ... Nach mehreren Tests funktioniert es, weil diese Schaltfläche oberhalb der Suchleiste ist. Aber wenn eine Schaltfläche über der UICollectionView ist, funktioniert es nicht mehr.
habe ich versucht, mit der postiion der Schicht zu spielen:
currentView.layer.zPosition = 2
Aber es funktioniert nicht ... Haben Sie eine Vorstellung davon, was ich Knopf über der UICollection Ansicht aktivieren tun könnte?
Dies ist der Code, der die Collection zu starten:
func collectionViewLaunch() {
// Layout of collectionView
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.itemSize = CGSize(width: self.view.frame.size.width * 0.47, height: self.view.frame.size.width * 0.47)
layout.scrollDirection = UICollectionViewScrollDirection.vertical
let frame = CGRect(x: 0, y: 44, width: self.view.frame.size.width, height: self.view.frame.size.height - self.tabBarController!.tabBar.frame.size.height - self.navigationController!.navigationBar.frame.size.height - 62)
layout.sectionInset = UIEdgeInsets(top: 8, left: 8, bottom: 8, right: 8)
collectionView = UICollectionView(frame: frame, collectionViewLayout: layout)
collectionView.delegate = self
collectionView.dataSource = self
collectionView.alwaysBounceVertical = true
collectionView.backgroundColor = UIColor.white
self.view.addSubview(collectionView)
// Define cell for collectionView
collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell")
// Call function to load posts
loadPosts()
}
Vielen Dank im Voraus
EDIT:
Erstellung von Schaltflächen (die Ansicht ist die Menüansicht):
func menuTapped(_ list: Array<String>, view: UIView, xCoord: CGFloat, yCoord: CGFloat, buttonWidth: CGFloat, buttonHeight: CGFloat){
var yCoord = yCoord
var itemCount = 0
for i in 0 ..< list.count {
itemCount = i
let listButton = UIButton(type: .custom)
listButton.frame = CGRect(x: xCoord, y: (yCoord), width: buttonWidth, height: 45)
// istButton.tag = itemCount
listButton.addTarget(self, action: #selector(self.menuButtonTapped(_:)), for: .touchUpInside)
listButton.setTitle("\(list[i])", for: .normal)
listButton.setTitleColor(UIColor(red: 109/255, green: 109/255, blue: 109/255, alpha: 1), for: .normal)
listButton.titleLabel?.font = UIFont.systemFont(ofSize: 15, weight: UIFontWeightThin)
listButton.tag = itemCount
// Add Buttons in the Scroll View
yCoord += buttonHeight
view.addSubview(listButton)
}
}
func menuButtonTapped(_ sender: Any){
let button = sender as! UIButton
// let tmpButton = self.view.viewWithTag(button.tag) as? UIButton
print(button.tag)
}
In der Ansicht geladen wurde:
sportMenuView = UIView(frame: CGRect(x: 0, y: CGFloat(-menuSport.count * 45), width: self.view.frame.size.width, height: CGFloat(menuSport.count * 45)))
sportMenuView.backgroundColor = UIColor.white
self.view.addSubview(sportMenuView)
sportMenuView.layer.zPosition = 2
menuTapped(menuSport, view: sportMenuView, xCoord: xCoord, yCoord: yCoord, buttonWidth: buttonWidth, buttonHeight: buttonHeight)
Wo fügen Sie Schaltfläche hinzu? Bitte teilen Sie den Code, um herauszufinden, wo ein Problem ist. –
Es ist bearbeitet, wenn Sie Fragen dazu haben, fühlen Sie sich frei. Vielen Dank ! – KevinB
Ich habe eine einfache App mit Ihrem Code gehackt und alle Schaltflächen funktionieren gut, sogar die über der CollectionView. Machst du in den Zellen einen ungewöhnlichen Berührungsdiebstahl (Gestenerkennung?)? Vielleicht könnten Sie 'sammlungView.isUserInteractionEnabled = false 'versuchen, wenn Sie das Menü anzeigen? – Magnas