Arrayの並び替えの方法です。
下記、取得してきたモデル群を、ある値の順に並べ替えしたいときを想定しています。
<h3> 実行環境 </h3>
Swift:5.0
Xcode:10.2.1
<h3> UIButtonのサイズ調整の方法 </h3>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import Foundation class Student{ var name:String var age:Int var weight:Double init(_ name:String, age:Int, weight:Double){ self.name = name self.age = age self.weight = weight } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
import UIKit class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { @IBOutlet weak var sortButton: UIButton! @IBOutlet weak var tableView: UITableView! var studentArray:[Student] = [] override func viewDidLoad() { super.viewDidLoad() self.tableView.delegate = self self.tableView.dataSource = self let studentA = Student("Taro", age:20, weight: 55.0) let studentB = Student("Jiro", age:15, weight: 70.0) let studentC = Student("Sabro", age:11, weight: 35.0) studentArray = [studentA,studentB,studentC] } @IBAction func tapSortButton(_ sender: Any) { //体重が大きいもの順に並び替え studentArray.sort{ $0.weight > $1.weight} self.tableView.reloadData() } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return studentArray.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell:UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell") ?? UITableViewCell() cell.textLabel?.text = studentArray[indexPath.row].name return cell } } |
なお、以下のように設定すれば他の並び替えも可能。
1 2 3 4 5 |
//体重が小さいもの順に並び替え studentArray.sort{ $0.weight < $1.weight} //年齢が大きいもの順に並び替え studentArray.sort{ $0.age > $1.age} |