【问题标题】:How to access UIButton via tag in Swift如何在 Swift 中通过标签访问 UIButton
【发布时间】:2014-08-23 10:59:53
【问题描述】:

目标-C

UIButton *tmpButton = (UIButton *)[self.view viewWithTag:tmpTag];

如何在 Swift 中做到这一点?

【问题讨论】:

    标签: ios uibutton swift


    【解决方案1】:

    在 Swift 中,这看起来像这样:

    var tmpButton = self.view.viewWithTag(tmpTag) as? UIButton
    

    它或多或少是一种直接翻译,只是演员表位于表达式的另一端。

    【讨论】:

    • 我自己做了这个var sasaButton = self.view.viewWithTag(22) as UIButton,它和你的一样,只是没有?。那么,你能告诉我你的代码中的?是什么吗?
    • @WebOrCode 我使用? 使变量可选,以防标记视图不存在。如果您 100% 确定标记视图存在,那么删除 ? 就可以了。
    • @webOrCode 在 Swift 2.0 中你必须使用 !或者 ?用于展开。
    • 为什么按钮的标签不能= 0? var tmpButton = self.view.viewWithTag(0) as? UIButtonprint(tmpButton) // Output: nil
    • @HassanTaleb 标签为零的控件不是UIButton吗?
    【解决方案2】:

    将 Swifty 作为 C 转换为 Swift 转换器,并使用此 link 转换您的代码并获得答案。

    Objective-C 代码

    UIButton *tmpButton = (UIButton *)[self.view viewWithTag:tmpTag];
    

    Swift 代码

    let tmpButton = view.viewWithTag(tmpTag) as? UIButton
    

    【讨论】:

    • 此解决方案实际上与公认的答案相同,因此将其否决是不公平的。我发现它比公认的答案更有趣,因为它建议使用名为 Swiftify 的工具进行 Objective-C 到 Swift 的翻译。这个答案和公认的答案之间的一个有趣的区别是它省略了self。我检查了它在没有self 的情况下是否仍然有效,它确实有效。根据 Ray Wenderlich 的风格指南,只要编译器接受 self,就应该省略它
    猜你喜欢
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    相关资源
    最近更新 更多