2017-07-30 74 views
0

我想在viewTable的特定單元格中更改嵌套視圖的Y位置。如何在tableView中的特定單元中執行一次代碼(在dequeueReusableCell下)

比方說

let condition = myarray[indexPath.row] 
if condition != nil {     
    cell.myView.frame.origin.y += 15 
} 

的問題是,由於這個你每次滾動它將執行的代碼,並添加另一個15到以前的y位置的時間是dequeueReusableCell下。

對每個單元執行一次這種最好和正確的方法是什麼?

+0

使用的UITableViewCell的子類,並覆蓋初始化。 – deadbeef

+0

@deadbeef,謝謝你請舉個例子,以前沒做過。 – adimona

回答

1
  • 聲明屬性defaultViewY

    var defaultViewY : CGFloat = 0.0 
    
  • viewDidLoad獲取視圖的默認Y位置

    func viewDidLoad() { 
        super.viewDidLoad() 
        defaultViewY = // add code to get the default y-position or use a literal constant 
    } 
    
  • cellForRow不使用+=運營商並添加else子句重置 y-pos銀行足球比賽,如果條件爲假

    let condition = myarray[indexPath.row] 
    if condition != nil { 
        cell.myView.frame.origin.y = defaultViewY + 15.0 
    } else { 
        cell.myView.frame.origin.y = defaultViewY 
    } 
    
+0

謝謝,是「==」還是「=」導致它給我一個警告,說明「==」的結果未被使用。你能解釋獲得viewWidth的原因嗎?試圖找出背後的竅門。 – adimona

+0

我不好,我更新了答案。我的意思是默認的y位置而不是寬度。 – vadian

+0

謝謝,而不是viewDidLoad下的代碼我在tableView func中添加了下面的代碼'if defultValueofY == 0.0 {defultValueofY = cell.myview.frame.origin.y}'事情看起來不錯,現在乾杯。 – adimona

相關問題