2017-01-23 48 views
0

我有一個包含不同部分的UITableView的應用程序。我想只允許訪問前3個部分,即索引路徑0,1和2.我的問題是我的代碼在應用程序啓動時起作用。但是,當我向下滾動表格視圖部分並向上滾動時,Tableview部分的頂部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

相關問題