Ios 生成唯一的uibutton标记

Ios 生成唯一的uibutton标记,ios,swift,Ios,Swift,我认为这是不可能的,但我希望有人知道如何使用唯一的int或字符串作为uibutton标记 理想情况下,我想要这样的东西: let uuid = NSUUID().UUIDString myBTN.tag = uuid.toInt()! myButton.tag = Int(arc4random()) 令人沮丧的是,swift只允许int作为标记如果您想为视图的标记指定一个唯一的整数,如您所述,您可以执行以下操作: let uuid = NSUUID().UUIDString myBTN.ta

我认为这是不可能的,但我希望有人知道如何使用唯一的int或字符串作为uibutton标记

理想情况下,我想要这样的东西:

let uuid = NSUUID().UUIDString
myBTN.tag = uuid.toInt()!
myButton.tag = Int(arc4random())

令人沮丧的是,swift只允许int作为标记

如果您想为视图的标记指定一个唯一的整数,如您所述,您可以执行以下操作:

let uuid = NSUUID().UUIDString
myBTN.tag = uuid.toInt()!
myButton.tag = Int(arc4random())
这将给你一个非常随机的标签,不太可能发生碰撞

但从更广泛的角度来看,这几乎肯定是一个糟糕的解决方案。如果添加UUID实际上是正确的,考虑子类<代码> UIButton < /代码>并添加唯一的标识符属性,而不是使用标记。< /P>
正如@dimpiax所建议的,考虑将对按钮的引用存储为属性,最有可能是一个按钮数组,而不是使用标识符,稍后再返回以查找相关按钮。

如果您希望按照所述为视图的标记分配唯一的整数,您可以执行以下操作:

let uuid = NSUUID().UUIDString
myBTN.tag = uuid.toInt()!
myButton.tag = Int(arc4random())
这将给你一个非常随机的标签,不太可能发生碰撞

但从更广泛的角度来看,这几乎肯定是一个糟糕的解决方案。如果添加UUID实际上是正确的,考虑子类<代码> UIButton < /代码>并添加唯一的标识符属性,而不是使用标记。< /P>
正如@dimpiax所建议的,考虑将对按钮的引用存储为属性,最有可能是一个按钮数组,而不是使用标识符并在以后返回以查找相关按钮。

您可以使用帮助器类执行一个技巧,然后像这样做

let uuid:Int = NSUUIDI.UUIDInt; // NSUUIDI() Not required here
myBTN.tag = uuid;

//Reverse (String value from tag)
println(NSUUIDI.UUIDStringFromInt(myBTN.tag));
助手类在这里

//NSUUIDI.swift
class NSUUIDI:NSObject {

    private static var _uUIDs:[String] = [String]();

    class var UUIDInt:Int {
        get {
            let uUIDInt:Int = NSUUIDI._uUIDs.count;
            NSUUIDI._uUIDs.append(NSUUID().UUIDString);
            return uUIDInt;
        }
    }

    class func UUIDStringFromInt(uUID:Int) -> String {
        return (uUID < NSUUIDI._uUIDs.count) ? NSUUIDI._uUIDs[uUID]:"\(uUID)";
    }
}
//nsuidi.swift
类nsuidi:NSObject{
私有静态变量[String]=[String]();
类变量uuidit:Int{
得到{
设uuidt:Int=nsuidi.\u uUIDs.count;
nsuidi._uUIDs.append(nsuid().UUIDString);
回流液;
}
}
类func UUIDStringFromInt(uUID:Int)->String{
返回(uUID
您可以使用helper类执行一个技巧,然后像这样执行

let uuid:Int = NSUUIDI.UUIDInt; // NSUUIDI() Not required here
myBTN.tag = uuid;

//Reverse (String value from tag)
println(NSUUIDI.UUIDStringFromInt(myBTN.tag));
助手类在这里

//NSUUIDI.swift
class NSUUIDI:NSObject {

    private static var _uUIDs:[String] = [String]();

    class var UUIDInt:Int {
        get {
            let uUIDInt:Int = NSUUIDI._uUIDs.count;
            NSUUIDI._uUIDs.append(NSUUID().UUIDString);
            return uUIDInt;
        }
    }

    class func UUIDStringFromInt(uUID:Int) -> String {
        return (uUID < NSUUIDI._uUIDs.count) ? NSUUIDI._uUIDs[uUID]:"\(uUID)";
    }
}
//nsuidi.swift
类nsuidi:NSObject{
私有静态变量[String]=[String]();
类变量uuidit:Int{
得到{
设uuidt:Int=nsuidi.\u uUIDs.count;
nsuidi._uUIDs.append(nsuid().UUIDString);
回流液;
}
}
类func UUIDStringFromInt(uUID:Int)->String{
返回(uUID
标签必须有多独特?视图唯一、应用程序唯一还是用户唯一?您是否以编程方式创建多个UIButton,这些UIButton需要具有唯一的标记?对于视图是唯一的,对于来自my db表的所有行ID也是唯一的。这些按钮是动态创建的程序,不使用标识符中的标记进行操作。最好将所需的按钮放入数组中。是否为每行创建一个按钮?您可以使用uuid作为键、按钮作为值的字典。@使用按钮数组的dimipiax工作得很好,谢谢。标记必须是多么独特?视图唯一、应用程序唯一还是用户唯一?您是否以编程方式创建多个UIButton,这些UIButton需要具有唯一的标记?对于视图是唯一的,对于来自my db表的所有行ID也是唯一的。这些按钮是动态创建的程序,不使用标识符中的标记进行操作。最好将所需的按钮放入数组中。是否为每行创建一个按钮?您可以使用uuid作为键,button作为值的字典。@dimipiax使用按钮数组非常有效,谢谢。我最终创建了一个按钮数组,而不是使用标记。感谢您提供的替代解决方案,我最终创建了一组按钮,而不是使用标签。感谢您提供的替代解决方案,我最终创建了一组按钮,而不是使用标签。感谢您提供的替代解决方案,我最终创建了一组按钮,而不是使用标签。谢谢你的替代方案