iDev/iOS Dev

UITableViewController에서 Checkmark 토글 방법

KraZYeom 2016. 1. 24. 18:43
반응형

난이도: 하

@available(iOS 5.0, *)
public var multipleSelectionBackgroundView: UIView?

public var selected: Bool // set selected state (title, image, background). default is NO. animated is NO

다중 선택과 체크마크가 필요해서 간단하게 구현하는 방법을 공유하겠다. 오래전에는 이것도 구현을 했었어야 했던 기억이 있는데 엄청 간단하게 바뀌었다.


우선 다중 선택이 가능하게 하기 위해서는 아래 처럼 코드 상으로 다중 선택을 활성화 하거나,

self.tableView!.multipleTouchEnabled = true

스토리보드의 TableView에서 select 부분을 Multiple Selection을 선택을 한다.


그리고 아래 코드처럼 간단하게 구현을 하면 된다.

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
  // 1.
  cell.accessoryType = cell.selected ? .Checkmark : .None
  return cell
}

// 2.
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
  if let cell = tableView.cellForRowAtIndexPath(indexPath) {
    cell.accessoryType = .Checkmark
  }
}

// 3.
override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
  if let cell = tableView.cellForRowAtIndexPath(indexPath) {
    cell.accessoryType = .None
  }
}
  1. 현재 셀(cell)이 선택 되어 있으냐 아니냐에 따라서 체크 마크를 표시한다.
  2. 선택(select) 되었을 때는 체크 마크로 변경 한다.
  3. 선택 해제(Deselect) 되었을 때는 체크 마크를 제거 한다.




반응형