【问题标题】:How to hide a bunch of labels in an IBOutletCollection?如何在 IBOutletCollection 中隐藏一堆标签?
【发布时间】:2012-05-28 07:55:05
【问题描述】:

Objective-C 和 iOS 开发新手,很想在这里帮忙!

我写了一些这样的代码

IBOutletCollection(UILabel) NSArray *allLabels;

在 IB 中,我已将视图中的所有标签链接到此集合,我想在特定条件下隐藏它们。但是,我不知道该怎么做。显然是为了隐藏我会使用的单个标签

labelX.hidden = YES;

但是,我不适合在没有收藏的情况下执行此操作,因为我有很多标签要隐藏。

提前感谢您的提示!

【问题讨论】:

    标签: iphone objective-c ios arrays iboutletcollection


    【解决方案1】:

    试试这个……

    [allLabels setValue:@(YES) forKey:@"hidden"];
    

    【讨论】:

    • @Vladimir 哪个会更快..? mit3z 或我建议的那个.. ?只是出于好奇。
    • 做了一些快速测试,所以不能保证它们是足够的。您的方法(在 iPod touch 上测试,包含 50 个标签)运行 0.0022 - 0.0029 秒,mit3z 的方法运行:0.0015-0.002 秒,所以速度更快
    • @Vladimir 你会说块通常比方法快..?这就是它发生的原因吗?
    • 完美运行。谢谢!但是,我会用什么来反对这一点 - 即重新显示标签?再次感谢您!
    • @BenToscano NO 而不是 YES。
    【解决方案2】:

    只需枚举集合并对内容做任何你想做的事情:

    [allLabels enumerateIndexesUsingBlock:^(UILabel *label, NSUInteger idx, BOOL *stop) {
        label.hidden = YES;
    }];
    

    【讨论】:

      【解决方案3】:

      数组类型的 Swift 版本:

      (allLabels as NSArray).setValue(NSNumber(bool: true), forKey: "hidden")
      

      【讨论】:

      • allLabels.forEach { $0.hidden = true } 会更快
      • 很好,@EmilioPelaez!如果您的实施,您应该创建一个答案。 ;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      相关资源
      最近更新 更多