2015-07-22 84 views
1

我試圖改變一個數組的元素的值取決於按鈕被點擊在哪個部分。例如說我有這個數組數字= [0, 0,0,0,0],我想將第一個元素更改爲5.我在第一部分的單元格中插入5,然後在同一部分中單擊完成,現在數組將讀取[5,0,0,0 ,0]。有沒有辦法知道按鈕屬於哪個部分?找出哪個部分的按鈕屬於單元格內的單元格UITableView

現在我有兩個單獨的類。一個用於定製單元格,另一個用於tableview。這兩個都有一個按鈕的插座。單擊按鈕時,自定義單元類會將臨時全局編號更改爲插入的編號。並且在表類中,我希望按鈕動作採用該全局數字,並將其插入與該按鈕所屬部分的數字相同的元素。除了我不知道如何找出它屬於哪個部分。

任何人都可以幫我解決這個問題嗎?我正在寫Swift btw。

+0

在Objective-C中,請參閱http:///stackoverflow.com/questions/22368525/indexpathforrowatpoint-returns-nil-only-for-first-cell-in-a-uitableview獲取按鈕的indexPath的解決方案。 – rmaddy

回答

0

如果你只需要包含抽頭按鈕小區的索引路徑的部分(不是部分和行),你可以在配置表視圖標籤與節號(INT)按鈕電池:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 
    let cell = tableView.dequeueReusableCellWithIdentifier("MyIdentifier", forIndexPath:indexPath) as! MyCustomTableViewCell 

    cell.myCustomButton.tag = indexPath.section 

    // Remove all existing targets (in case cell is being recycled) 
    cell.myCustomButton.removeTarget(nil, action: nil, forControlEvents: .AllEvents) 

    // Add target 
    cell.myCustomButton.addTarget(self, action:"buttonAction:", forControlEvents:.TouchUpInside) 

    return cell 
} 

func buttonAction(sender:AnyObject) 
{ 
    if let button = sender as UIButton{ 
     println("Tapped Button in section: \(button.tag)") 
    } 
} 

如果您同時需要部分行,你最好還是存儲整個索引路徑。爲此,您可以使用類型爲NSIndexPath的屬性的定製UIButton子類,或將其存儲在表格視圖單元格中。 但是第二個解決方案有點麻煩,因爲您必須通過使用superview等來訪問按鈕中的表格單元格(然後是索引路徑),並且這取決於表格單元格的子視圖結構。我不確定你的按鈕的父視圖是表格單元本身還是它的「內容視圖」(我現在有點生鏽......)

+0

非常感謝。這正是我所期待的。但是我不得不刪除//刪除所有現有的目標(如果電池被回收) cell.myCustomButton.removeTarget(零,動作:無,forControlEvents:.AllEvents) 和 //添加目標 cell.myCustomButton.addTarget (self,action:「buttonAction:」,forControlEvents:.TouchUpInside) ,因爲它會允許我的自定義單元類中的操作被觸及。這到底是什麼? – HummingBird24

+0

我只是擔心兩次添加相同的目標/操作會創建一個副本,而當您點擊按鈕時,您的方法會被調用兩次或更多;但我不確定(必須研究)。 –

+0

也就是說,如果每次循環使用單元格時添加相同的目標/操作,該按鈕將以多個副本結束,並在點擊時通知每個條目(每次您的視圖控制器)。但我不確定UIButton如何處理重複的目標/動作對。所以我只是添加了該行以確保。 –

0

如果您想查找哪個單元格已被「點擊」,您可以使用UITableViewDelegate方法。

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

} 
+2

問題是關於處理單元格按鈕的按鈕按鈕。你提議的代表不會被調用。 – rmaddy

+0

誤解了這個問題。我的錯。 –

相關問題