Objective c 目标C:如何从两个NSInteger生成一个唯一的NSInteger?

Objective c 目标C:如何从两个NSInteger生成一个唯一的NSInteger?,objective-c,uitableview,uiview,tags,Objective C,Uitableview,Uiview,Tags,可能重复: 这在Objective-C中有效吗? 如果是,如何使用NSInteger 我这样问是因为我想从UITableView的NSIntegers行和部分计算一个唯一的NSInteger标记 看,我正在处理一个UITableViewController,它有三个部分,每个部分都有多行。每行都有一个UISwitch,并且每个UISwitch都链接到相同的目标操作方法switchAction: 在switchAction:中,我的计划是检查发送方的标签,找出UITableView的ui开关n

可能重复:

这在Objective-C中有效吗?

如果是,如何使用
NSInteger

我这样问是因为我想从
UITableView
NSInteger
s
部分
计算一个唯一的
NSInteger标记

看,我正在处理一个
UITableViewController
,它有三个部分,每个部分都有多行。每行都有一个
UISwitch
,并且每个
UISwitch
都链接到相同的目标操作方法
switchAction:

switchAction:
中,我的计划是检查
发送方的
标签
,找出
UITableView
ui开关
nsindepath
部分

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

+ (NSInteger)integerFromInteger1:(NSInteger)int1 integer2:(NSInteger)int2;
+ (NSIndexPath *)indexPathFromInteger:(NSInteger)integer;

第一种方法可能更好地用C编写。如果您愿意,也可以这样做。

根据,
NSInteger
在每个系统/架构上总是至少有32位,因此是的,答案会起作用。

与其纠结于位移位,不如尝试以下方法:

首先,找到包含UISwitch的UITableViewCell。如果有自定义UITableViewCell子类,只需将UISwitch的目标/操作指向包含它的单元格上的方法即可。如果您使用的是库存UITableViewCell,则可以通过在循环中调用
superview
找到包含UISwitch的UITableViewCell

拥有UITableViewCell后,在视图控制器(或任何可以访问UITableView的对象)上调用一个方法,然后可以调用UITableView的
indexPathForCell:
方法来获取包含节和行的NSIndexPath对象。

基于,对于如何获取发送
switchAction:
消息的
UISwitch
的索引路径,我提出了一个漂亮的解决方案

- (void)switchAction:(id)sender {
    UISwitch *onOff = (UISwitch *)sender;
    NSIndexPath *indexPath = [self.tableView indexPathForCell:
                              (UITableViewCell *)[onOff superview]];
    // carry on...
}

不需要标签。穿上你的裤子。

我不知道你为什么要这样使用标签,但你已经链接到了另一个SO问题来回答这个问题。@Kevin Ballard,好的,那么,您将采取什么方法来确定哪个开关发送了
switchAction:
消息?开关将自身作为第一个参数发送到
switchAction:
。你已经知道了,因为你说你的计划是检查
发送者的
标签(其中
发送者是开关)。@凯文·巴拉德,对。对不起,我的意思是?谢谢你的建议。我想我找到了一个更好的方法。我不确定假设
UITableViewCell
accessoryView
superview
就是
UITableViewCell
本身是否安全。例如,如果苹果决定改变这一点怎么办?我想,正如@benzado所建议的,使用循环会更好。或者,如果可以,只需使用标签。