【问题标题】:Get UIButton from view programmatically以编程方式从视图中获取 UIButton
【发布时间】:2010-07-15 19:14:57
【问题描述】:

我正在创建一个按钮网格并将其添加到我的自定义视图keyboardView,如下所示:

int offset = 0;
for (int row = 0; row<4; row++){
    for (int col = 0; col<13;col++) {
        offset +=1;
        UIButton *aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        aButton.frame = CGRectMake(5+col*65+offset,5+row*65, 60, 60);
        [aButton setTitle:myarray[row][col] forState:UIControlStateNormal];
        [aButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];         

        [keyboardView addSubview: aButton];
    }
}

我需要某些按钮具有不同的大小,例如返回键或空格键。如何以编程方式获取对特定按钮的引用,稍后以相同的方法?有没有比设置tag 然后调用[keyboardView viewWithTag:t] 更简单的方法?因为int 会变得混乱。

谢谢。

【问题讨论】:

    标签: objective-c iphone uibutton


    【解决方案1】:

    你可以创建像UIButton *spaceBar 这样的实例变量。如果您在两个被认为是空格键的 for-Iretations 中到达按钮,请执行spacebar = aButton。 所以你可以稍后在方法中使用这个实例变量来引用指定的按钮。 ;-) 我希望它或多或少可以理解。 ^^

    【讨论】:

    • 我可以很好地改变按钮的宽度,使用这个方法,但是,它很大但是,按钮在我现有的按钮下面重绘,我需要把所有的东西都向右移动新的宽度我的按钮...
    • 比它变得复杂。我会在 IB 中创建它。或者有什么理由不这样做?
    • 不是特别,除了它的大视图和必须控制每个按钮分别拖动到文件所有者,因为我认为您不能对 IBAction 进行多项选择?可以吗?
    • 不是同时。但是您可以将一个 IBAction 连接到多个按钮。
    【解决方案2】:

    您可以使用 UIView 标记(不必混淆,只需创建一个枚举),或者如果您只有几个“特殊”UIButtons,您可以创建 ivars 来保留对它们的引用。

    【讨论】:

    • 特殊按钮是tab、caps、shift、fn、ctrl、option等……在这种情况下我将如何使用枚举?
    • 枚举 { KeyQ, KeyW, KeyE, KeyR, KeyT, KeyY ...};并标记它们。
    • 如何在 for 循环中标记它们?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多