2017-01-23 2 views
0

異なるセクションを含むUITableViewを持つアプリケーションがあります。最初の3つのセクション(インデックスパス0、1、2)へのアクセスのみを許可したいと考えています。私の問題は、アプリケーションの起動時に自分のコードが動作することです。しかし、テーブルビューのセクションをスクロールダウンして、テーブルビューのセクションの上部をスクロールバックすると、0に戻ったときに1と2が無効になります。どうすればこの問題を解決できますか?テーブルビューのセルをスクロールすると、アクティブなtableViewセルが無効になり続ける

//formatting the cells that display the sections 
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell! 

    cell.textLabel?.text = sectionName[indexPath.row] 
    cell.textLabel?.textAlignment = .Center 
    cell.textLabel?.font = UIFont(name: "Avenir", size:30) 

    //Code to block disable every section after row 3. 
    if (indexPath.row >= 2) { 
    cell.userInteractionEnabled = false 
    cell.contentView.alpha = 0.5 
    } 

    return cell 

} 

答えて

2

細胞は再使用されている。セルは再利用され、パフォーマンスを向上させるために再作成されません。したがって、下にスクロールすると、条件チェックのためにセルの対話が無効になります。 indexPath.rowが2未満であるかどうかをチェックする条件がないので、ユーザインタラクションは再利用されたセルと同じ(false)のままです。

あなたの状態チェックを少し修正すれば修正されます。

if (indexPath.row >= 2) { 
    cell.userInteractionEnabled = false 
    cell.contentView.alpha = 0.5 
} 
else{ 
    cell.userInteractionEnabled = true 
    cell.contentView.alpha = 1 
} 
+0

ありがとうございました。 – pete800

関連する問題