-1

我想像这样修改目标 C中的标签:

当按下一个名为“Car”的按钮时,我希望标签“pushedCar”取消隐藏。现在它看起来像这样,但它是静态的......

if ([buttonName isEqualToString:@"Car"]) {
        self.pushedCar.hidden = NO;}

我怎样才能写出类似的东西:

if ([buttonName isEqualToString:@"Car"]) {
        self.pushed%@.hidden , buttonName = false;}

这是一个愚蠢的例子,但我需要它来处理太复杂的事情,无法在这里写下来。

提前致谢。

迈克尔

4

6 回答 6

1

更改所有按钮标题,例如 Car、Van、Bus 等,然后将其作为所有按钮的内部方法,

-(IBAction) buttonPressed:(UIButton *) pressedButton{
    NSString *buttonName = pressedButton.titleLabel.text;
    UILabel *label = [self valueForKey:[NSString stringWithFormat:@"pushed%@", buttonName]];
    label.hidden = NO;
}
于 2013-02-26T12:02:55.710 回答
0

像这样?

if ([ButtonName isEqualToString:@"Car"]) {
        self.pushedCar.hidden = !self.pushedCar.hidden;
}
于 2013-02-26T11:43:14.877 回答
0

使用 KVC

id name = nil
if(myButtonCurrentTitle isEqualTo:@"Car"]) name = @"Car";


assert(name);
UILabel *label = [self valueForKey:[NSString stringWithFormat:@"pushed%@", name]];
assert([label isKindOfClass:[UILabel class]]);
于 2013-02-26T11:43:38.163 回答
0

如果您的意思是“我如何获得与字符串相关的对象”,则将按钮放入 NSDictionary 可能是最简单的,这样您就可以执行类似的操作

MyButton *button = [buttonDict objectForKey:@"Car"];

但老实说,您的示例代码没有多大意义,所以我发现很难知道如何为您编写一个像样的示例

于 2013-02-26T11:43:50.210 回答
0

如果我理解正确,您需要不同的按钮和标签(例如汽车、马、猫)。

在这种情况下,创建一个 NSDictionary,其键为 buttonName (@"Car"),其对象为标签。

你可以这样写:

UILabel *label = [myDictionary objectForKey:buttonName];
label.hidden = NO; // or label.hidden = !label.hidden;

希望这可以帮助!

于 2013-02-26T11:46:24.170 回答
0

我认为您正在尝试使用键值编码来获取基于任意字符串的按钮实例。

您首先需要使用属性公开按钮实例:

@interface MyClass : UIView
{
    // These are connected using Interface Builder
    IBOutlet UIButton *carButton;
    IBOutlet UIButton *busButton;
    IBOutlet UIButton *bikeButton;
}

@property (string, nonatomic, readonly) UIButton *carButton;
@property (string, nonatomic, readonly) UIButton *busButton;
@property (string, nonatomic, readonly) UIButton *bikeButton;

@end

您可以使用以下方法获取按钮的实例:

NSString *thing = "@car";
UIButton *button = [self valueForKey:[NSString stringWithFormat:@"%@Button", thing]];
[button setHidden:YES];
于 2013-02-26T11:50:42.990 回答