2016-05-08 17 views
-1

私はそれをタップするとtableViewセルにpickerViewを追加したいと思います。tableViewCellのpickerViewを迅速に追加するには?

ちょうどこの写真 enter image description here

ではなく、日付ピッカーのように、私は、性別や好きな食べ物などを選択することpickerViewを追加したい。..

が、私はGoogleでいくつかの例と解決策を見つけた、さそれは可能ですか?

答えて

1

UIPickerViewを持っている必要がありますindexPathsをチェックするための変数を作成します。

var indexesNeedPicker: [NSIndexPath]? 

その後didSelectRowAtIndexPath方法でそれらindexPathsを追加します。 彼らはすでにあなたのcellForRowAtIndexPath方法

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = UITableViewCell(style: .Default, reuseIdentifier: "cell") 
    if indexesNeedPicker?.contains(indexPath) == true { 
     let pickerView = UIPickerView(frame: cell.frame) 
     pickerView.delegate = self 
     pickerView.dataSource = self 
     cell.addSubview(pickerView) 
    } 
    return cell 
} 

メソッドを追加してカスタマイズし、あなたのViewController

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource { 

そして最後にデリゲートを追加し編集し

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    if indexesNeedPicker != nil { 
     if indexesNeedPicker!.contains(indexPath) == true { 
      indexesNeedPicker!.removeAtIndex((indexesNeedPicker!.indexOf(indexPath))!) 
      return 
     } 
    } 
    indexesNeedPicker?.append(indexPath) 
    self.table.deselectRowAtIndexPath(indexPath, animated: true) 
    self.table.reloadData() 
} 

を追加されている場合にも、それらを削除:

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    <#code#> 
} 

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    <#code#> 
} 

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
    <#code#> 
} 

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    <#code#> 
} 
関連する問題