2017-08-17 1 views
2

Ich möchte 10 Tasten in der ViewController erstellen. Diese Tasten bewegen den Benutzer zum nächsten ViewController. Wenn ich ein Storyboard verwende, muss ich 10 Schaltflächen erstellen oder gibt es einen einfacheren Weg, das Problem zu lösen?Erstellen Sie mehrere Tasten

Es soll auch folgende Bedingungen erfüllen:

  • meine Taste in der Zelle nicht grau sein oder eine andere Farbe. Aber ich muss auf meine Schaltfläche selektiert werden und die Farbe wechseln.
  • Wenn ich das TableView verwende und den Knopf drücke, füllt sich die ausgewählte Zelle mit einer grauen Farbe. Ich möchte nur die Schaltfläche auswählen. (Tableview soll nicht graue Farbe für die Auswahl zeigen)
+0

Möchten Sie ein spezielles Gitter haben? Sie können diese Schaltflächen im Code erstellen. – Phyber

+0

können Sie UIColletionView oder UITableview verwenden, müssen Sie entscheiden, welche passt am besten –

+0

@Phyber Ich weiß, aber ich möchte Auto-Layout für verschiedene Bildschirme verwenden –

Antwort

2

Hier ist Beispielcode als Lösung für Ihr Problem (es funktioniert entsprechend Ihre Anforderung, kopieren Sie einfach und in Ihren View-Controller einfügen)

import UIKit 

class ViewController2: UIViewController, UITableViewDelegate, UITableViewDataSource { 

    @IBOutlet var tblTable: UITableView! 

    var buttonTitles = ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten"] 


    override func viewDidLoad() { 
     super.viewDidLoad() 
     tblTable.delegate = self 
     tblTable.dataSource = self 
    } 


    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return buttonTitles.count 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "buttoncell") as! ButtonCell 

     let buttonTitle: String = buttonTitles[indexPath.row] 
     cell.btnButton.setTitle(buttonTitle, for: .normal) 
     cell.btnButton.tag = indexPath.row 
     cell.btnButton.addTarget(self, action: #selector(self.buttonClick(button:)), for: .touchUpInside) 
     cell.selectionStyle = .none 
     return cell 
    } 

    @objc func buttonClick(button: UIButton) -> Void { 
    print("btnButton clicked at index - \(button.tag)") 
    button.isSelected = !button.isSelected 

    if button.isSelected { 
     button.backgroundColor = UIColor.green 
    } else { 
     button.backgroundColor = UIColor.yellow 
    } 
    } 

} 


class ButtonCell: UITableViewCell { 

    @IBOutlet var btnButton: UIButton! 

    override func setSelected(_ selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 

     if selected { 
      btnButton.backgroundColor = UIColor.green 
     } else { 
      btnButton.backgroundColor = UIColor.yellow 
     } 

    } 

    override func setHighlighted(_ highlighted: Bool, animated: Bool) { 
     super.setHighlighted(highlighted, animated: animated) 

     if highlighted { 
      btnButton.backgroundColor = UIColor.green 
     } else { 
      btnButton.backgroundColor = UIColor.yellow 
     } 
    } 
} 


und Schnappschuss von Storyboard-Layout mit Tableview und Zelloberflächendesign

enter image description here

Hier ist Ergebnis (Arbeitsverhalten der Taste) in Simulator

enter image description here

Ich denke, das ist genug, um Ihr Problem zu lösen.

+0

Es funktioniert. Aber ich möchte segue verwenden, um zum nächsten Controller zu wechseln. Wie benutze ich den Übergang, der beim Drücken der Taste zum nächsten Controller geht? –

+0

Ich Frage stellen, überprüfen Sie bitte https://stackoverflow.com/questions/45739295/swift-segue-on-button-click –