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所建议的,使用循环会更好。或者,如果可以,只需使用标签。