2016-06-27 5 views
0

サブビューをクリックすると、サブビューのアクションがトリガされませんでした。しかし、私は全細胞を選択しました。それを修正するには?テーブルセル内でサブビューのアクションを設定しました(スウィフト)

ここに私のコードです。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("idcell", forIndexPath: indexPath) as UITableViewCell 
    let lblTitle : UILabel = cell.contentView.viewWithTag(101) as! UILabel 
    lblTitle.text = (deptId[indexPath.row] as? String)! + "  " + (deptDesc[indexPath.row] as? String)! 
    var height:CGFloat = 40 
    if(indexPath.row == departmentSelectedRow){ 
     for i in 0...deptProfile.count-1{ 
      let label = UILabel(frame: CGRectMake(0,height,400,30)) 
      label.targetForAction("sadasdd", withSender: nil) 
      height = height+40 
      label.text = ("ewrewrewre") 
      label.backgroundColor = UIColor.redColor() 
      cell.addSubview(label) 
     } 
    } 
    return cell 
} 
+0

あなたは 'targetForAction'がコールバックを追加していると思いますか? – Wain

+0

ラベルの操作を追加するにはどうすればよいですか? – carmelo

+0

ボタンを使う... 'cellForRowAtIndexPath'に任意のサブビューを追加しないでください - いつそれらが削除されますか... – Wain

答えて

0

(セル全体を選択するのではなく)セル内の何かと対話したい場合は、ボタンまたはジェスチャ認識子を使用する必要があります。これらは、ターゲットとアクションを追加できる適切なインタラクティブな要素です。

あなたはまた、具体的には、あなたがた細胞を使用している方法を変更する必要があります。

  1. 使用カスタムセルクラス、あなたは直接の代わりに異なる複数の悪い習慣
  2. 使用しているviewWithTagを使用してのセル要素を参照することができますので、選択した行と選択していない行に実際に異なるセルを使用できるようにセルクラス(したがって識別子)を追加します。
  3. その場でサブビューを作成したり追加したりしないでください。
+0

cellForRowAtIndexPath – carmelo

+0

でサブビューを追加すると、セルを再利用するときに、ビューがサブビューとして表示されてしまうという欠点は何ですか?それらを削除することはできますが、再利用の代わりにそれらを作成して破棄するのは無駄です。削除する正しいものをどのように見つけ出すのですか(すべてをタグ付けして検索する必要があります)。それは動作することができますが、それは非常に乱雑です(悪い)コード – Wain

+0

私の拡張コンテンツは動的です。私はまだそれを処理するためにセルクラスを使用できますか? – carmelo

関連する問題