2017-06-26 2 views
0

Image like thistableViewcellの選択を編集時に異なるようにするにはどうすればいいですか?

イメージ内に赤い円の2行を表示するという考えがあります。
デフォルトのセル選択はなしで、編集モードに切り替えると選択がデフォルトになります。
編集モードでセル選択を設定しないと、チェックマークが表示されません。
私はストーリーボードを使いたくないので、私はこれをプログラミングのために練習します。
私はこれをやろうとしますが、失敗するようです。
私はどこでミスをしているのか分かりません。

import UIKit 

class ViewController: UIViewController { 

@IBOutlet weak var tableView: UITableView! 
@IBOutlet weak var rightBtn: UIBarButtonItem! 

@IBOutlet weak var leftBtn: UIBarButtonItem! 
var items:[String] = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A1","B1"] 

var selectedIndexs = [Int]() 

override func loadView() { 
    super.loadView() 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.delegate = self 
    tableView.dataSource = self 

    self.tableView?.allowsMultipleSelectionDuringEditing = true 

    rightBtn.target = self 
    leftBtn.target = self 
    rightBtn.action = #selector(btnClick(_:)) 
    leftBtn.action = #selector(leftBtnClick(_:)) 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func leftBtnClick(_ sender: AnyObject) { 

    if(self.tableView!.isEditing == false) { 
     self.tableView!.setEditing(true, animated:true) 
    } 
    else { 
     self.tableView!.setEditing(false, animated:true) 
    } 
} 

func btnClick(_ sender: AnyObject) { 
    var selectedIndexs = [Int]() 
    if let selectedItems = tableView!.indexPathsForSelectedRows { 

     let sortedArray = selectedItems.sorted() 
     print("哈:\(sortedArray)") 

     for indexPath in selectedItems { 
      selectedIndexs.append(indexPath.row) 
     } 
    } 

    items.removeAt(indexes:selectedIndexs) 

    self.tableView?.reloadData() 
    self.tableView!.setEditing(false, animated:true) 
} 
} 

    extension ViewController: UITableViewDelegate, UITableViewDataSource { 
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return items.count 
} 

func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 

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

    cell.textLabel?.text = self.items[indexPath.row] 

    if tableView.isEditing == true { 
     cell.selectionStyle = .default 
    }else{ 
     cell.selectionStyle = .none 
    } 

    return cell 
} 
} 
+0

NSTableView for UIKit? –

答えて

1

leftBtnClick関数に2行追加します。

func leftBtnClick(_ sender: AnyObject) { 
    if self.tableView!.isEditing == false { 
     self.tableView!.setEditing(true, animated:true) 
     self.tableView.allowsSelection = true 
    } else { 
     self.tableView!.setEditing(false, animated:true) 
     self.tableView.allowsSelection = false 
    } 
} 

そして、以下のコードをcellForRawAtIndexPathから削除します。

if tableView.isEditing == true { 
    cell.selectionStyle = .default 
} else{ 
    cell.selectionStyle = .none 
} 
+0

ありがとうございます。いい答え。それは私の問題を完全に解決します。 –

+0

ありがとうございます。ハッピーコーディング。 –

関連する問題