2015-07-22 71 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

误解了这个问题。我的错。 –

相关问题