【问题标题】:How do I access an object by a generated instance name? [duplicate]如何通过生成的实例名称访问对象? [复制]
【发布时间】:2012-10-18 04:13:44
【问题描述】:

我有一个包含多个视图的 xib 文件。他们的IBOutlets 被命名为view1view2view3 等等,我想循环访问它们。在Objective-C中可以做到这一点吗?

我知道在 ActionScript 中您可以生成这样的对象名称:["view"+num]

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    将它们放在 IBOutletCollection 中。这是一个数组,您可以在界面生成器中填充它并遍历它。

    【讨论】:

      【解决方案2】:

      与其命名它们,不如为其分配标签 (0...10),然后您可以使用 viewWithTag: 将它们从父视图中拉出。

      【讨论】:

        【解决方案3】:

        使用键值编码。如果说假设我有 view1 .. view 10,那么我会这样使用它;

        for(int i=0 i< 10; i++){
          UIView *eachView = [self valueForKey:[NSString stringWithFormat:@"view%d", i]];
        }
        

        我希望它对你有用。

        【讨论】:

        • 太棒了!它有效:)) 非常感谢!
        • 这很好用。我也建议这样做。
        【解决方案4】:

        实现此目的的另一种方法是使用NSDictionaryOfVariableBindings

        NSArray *views = [NSDictionaryOfVariableBindings(view1, view2, view3) allObjects];
        for (UIView *item in views)
            do something with item;
        

        【讨论】:

          猜你喜欢
          • 2016-12-05
          • 2014-04-07
          • 2020-10-03
          • 2015-04-11
          • 2020-06-15
          • 1970-01-01
          • 2013-02-21
          • 2012-01-06
          • 2016-03-06
          相关资源
          最近更新 更多