Objective-C:如何从两个NSIntegers生成一个唯一的NSInteger?

时间:2011-06-28 23:05:57

标签: objective-c uitableview uiview tags

  

可能重复:
  Pass two integers as one integer

这可以在Objective-C中使用吗? Pass two integers as one integer

如果是,我该如何使用NSInteger

我问,因为我想从NSInteger tag s NSUInteger&来计算一个独特的rowsection的{​​{1}}?

请参阅,我正在处理具有三个部分的UITableView,每个部分都有多行。每行都有一个UITableViewController,每个UISwitch都链接到同一个目标操作方法UISwitch

switchAction:,我的计划是检查switchAction:的{​​{1}}以找出sender的{​​{1}} tagUISwitchNSIndexPath

所以,我想要两种方法,如:

section

第一种方法可以用C语写得更好。如果你愿意的话也可以。

3 个答案:

答案 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...
}

无需标签。穿上裤子吧。