这可以在Objective-C中使用吗? Pass two integers as one integer
如果是,我该如何使用NSInteger
?
我问,因为我想从NSInteger tag
s NSUInteger
&来计算一个独特的row
。 section
的{{1}}?
请参阅,我正在处理具有三个部分的UITableView
,每个部分都有多行。每行都有一个UITableViewController
,每个UISwitch
都链接到同一个目标操作方法UISwitch
。
在switchAction:
,我的计划是检查switchAction:
的{{1}}以找出sender
的{{1}} tag
&UISwitch
。NSIndexPath
。
所以,我想要两种方法,如:
section
第一种方法可以用C语写得更好。如果你愿意的话也可以。
答案 0 :(得分:2)
不要乱用位移,试试这个:
首先,找到包含UISwitch的UITableViewCell。如果您有自定义的UITableViewCell子类,只需将UISwitch的目标/操作指向包含它的单元格上的方法即可。如果您使用的是UITableViewCell库存,则可以通过循环调用superview
找到包含UISwitch的UITableViewCell。
获得UITableViewCell后,在视图控制器上调用一个方法(或任何有权访问UITableView的方法),然后调用UITableView的indexPathForCell:
方法获取带有节和行的NSIndexPath对象。
答案 1 :(得分:0)
根据How to convert An NSInteger to an int?,NSInteger
在每个系统/架构上始终至少为32位,所以是的,Pass two integers as one integer的答案将起作用。
答案 2 :(得分:0)
基于@benzado's answer,我想出了一个漂亮的解决方案,用于获取发送UISwitch
消息的switchAction:
的索引路径。
- (void)switchAction:(id)sender {
UISwitch *onOff = (UISwitch *)sender;
NSIndexPath *indexPath = [self.tableView indexPathForCell:
(UITableViewCell *)[onOff superview]];
// carry on...
}
无需标签。穿上裤子吧。