【问题标题】:iPhone OS: Using an NSString variable to specify a property or ivariPhone OS:使用 NSString 变量指定属性或 ivar
【发布时间】:2010-04-05 19:52:43
【问题描述】:

我有一个程序,我想根据某些变量隐藏或显示某些 UI 按钮,并且所有按钮都以递增方式命名,如“button1、button2、button3”。

所以我想遍历按钮,但我不知道如何在赋值语句中使用 nsstring 作为点符号赋值中的变量来寻址按钮,例如:

 for (int i = 1; i < weekday; i++) {
    int buttonIncrement = 0;
    NSString *tempString = [[NSString alloc] initWithFormat:
    @"calbutton%i", buttonIncrement];

 self.tempString.hidden = YES;
}

任务的“tempString”部分我想告诉它插入“calbuttonx”,其中x是按钮编号。

你能以某种方式做到这一点吗?如果是请解释一下。

【问题讨论】:

    标签: iphone variables syntax nsstring


    【解决方案1】:

    使用数组!


    如果不能使用数组,可以使用Key-Value Coding (KVC)通过字符串引用属性:

    UIButton* button = [self valueForKey:tempString];
    button.hidden = YES;
    

    【讨论】:

    • 我试图为按钮使用界面构建器,因为这是我所知道的,有什么方法可以将 IB 与数组一起使用,还是必须以编程方式布局界面?
    • @nick:我认为需要以编程方式填充数组。
    【解决方案2】:

    您还可以为IB中的每个按钮分配一个标签,并使用

    获取与该标签关联的按钮
    - (UIView *)viewWithTag:(NSInteger)tag
    

    UIView 类中定义,例如:

    for( int k = 0; k < 5; ++k ) {
    
        id subview = [self.view viewWithTag: k];
    
        if( subview ) { 
    
            ...
        }
    }
    

    【讨论】:

    • 太棒了,我认为这会起作用,我会告诉你进展情况,因为我相信你迫不及待地想知道,哈哈。再次感谢!
    • 是的,这确实有效,尽管我最终不得不将代码重新编写成更加程序化的方法,但我真的很感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    相关资源
    最近更新 更多