小さくて美しいSwift&iOSチュートリアル03-BasicListEdit

2800 ワード

BasicViewEdit.gif
このチュートリアルでは、次の内容について説明します.
  • Table Viewにドロップダウンリフレッシュ機能
  • を追加
  • Table Viewに編集機能
  • を追加
  • Table Viewに削除機能を追加
  • UIrefreshControlドロップダウン・リフレッシュ
    
    var refreshControl: UIRefrshControl! 
        
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
            refreshControl = UIRefreshControl()
            refreshControl.addTarget(self, action: #selector(refreshTable), for: .valueChanged)//        
            animalsTableView.refreshControl = refreshControl
        }
    

    応答関数の定義refreshTable()
    func refreshTable(){
            self.animalList = cloudAnimalList
            animalsTableView.reloadData()//      
            refreshControl.endRefreshing() //    
        }
    

    編集機能の実装
    Navigationbarの左上隅にeditボタンを追加TableView Controlを直接使用する場合は、次の文を直接使用して編集機能を完了できます.
    self.navigationItem.leftBarButtonItem = self.editButtonItem
    

    Table ViewがViewControllerに基づいて実装されている場合は、左上隅editボタンのactionメソッドに次のコードを追加する必要があります.
    @IBAction func touchButtonItem(_ sender: UIBarButtonItem) {
            if let title = sender.title{
                switch title{
                    case "Edit":
                        animalsTableView.setEditing(true, animated: true)
                        sender.title = "Done"
                    case "Done":
                        animalsTableView.setEditing(false, animated: true)
                        sender.title = "Edit"
                    default: break
                }
            
            }
        }
    

    削除機能の実装
    DataSourceで実現する以下の方法は、isEdit=trueで各cellが表示する状態状態を設定する2つの選択肢がある.deleteのもう一つはinsert
        func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
            return UITableViewCellEditingStyle.delete
        }
    

    また、Delegteでは、クリックに応答するための次の方法を実装します.
    
        func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
            if editingStyle == .delete{
                animalList.remove(at: indexPath.row)
                animalsTableView.deleteRows(at: [indexPath], with: .fade)
            }else if editingStyle == .insert {
                // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
            }
        }
    

    編集機能の実装
    配列内の要素がtableviewと一致するように、DataSourceでは次の方法が実装されています.
    func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
            animalList.insert(animalList.remove(at: sourceIndexPath.row), at: destinationIndexPath.row)
        }
    

    これにより、リフレッシュ、削除、編集の機能が実現します.