Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 目标C:修改名称包含字符串的标签_Ios_Iphone_String_Label - Fatal编程技术网

Ios 目标C:修改名称包含字符串的标签

Ios 目标C:修改名称包含字符串的标签,ios,iphone,string,label,Ios,Iphone,String,Label,我想修改目标C中的标签,如下所示: 当按下一个名为“Car”的按钮时,我想把标签“pushedCar”解开。 现在看起来像这样,但它是静态的 if ([buttonName isEqualToString:@"Car"]) { self.pushedCar.hidden = NO;} 我怎样才能写出这样的东西: if ([buttonName isEqualToString:@"Car"]) { self.pushed%@.hidden , buttonName

我想修改目标C中的标签,如下所示:

当按下一个名为“Car”的按钮时,我想把标签“pushedCar”解开。 现在看起来像这样,但它是静态的

if ([buttonName isEqualToString:@"Car"]) {
        self.pushedCar.hidden = NO;}
我怎样才能写出这样的东西:

if ([buttonName isEqualToString:@"Car"]) {
        self.pushed%@.hidden , buttonName = false;}
UILabel *label = [myDictionary objectForKey:buttonName];
label.hidden = NO; // or label.hidden = !label.hidden;
这是一个愚蠢的例子,但我需要它来写一些太复杂的东西

提前谢谢

迈克尔是这样的吗

if ([ButtonName isEqualToString:@"Car"]) {
        self.pushedCar.hidden = !self.pushedCar.hidden;
}
使用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]]);
如果你的意思是“我怎样才能得到一个与字符串相关的对象”,那么将按钮放入NSDictionary可能是最简单的方法,这样你就可以像

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

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

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

在这种情况下,制作一个NSDictionary,其中键为buttonName(@“Car”),对象为标签

你可以这样写:

if ([buttonName isEqualToString:@"Car"]) {
        self.pushed%@.hidden , buttonName = false;}
UILabel *label = [myDictionary objectForKey:buttonName];
label.hidden = NO; // or label.hidden = !label.hidden;

希望这有帮助

我认为您正在尝试使用基于任意字符串的方法获取按钮实例

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

@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];

更改所有按钮标题,如汽车、面包车、公共汽车等。 然后把这作为他们所有人的内部修补方法

-(IBAction) buttonPressed:(UIButton *) pressedButton{
    NSString *buttonName = pressedButton.titleLabel.text;
    UILabel *label = [self valueForKey:[NSString stringWithFormat:@"pushed%@", buttonName]];
    label.hidden = NO;
}

不清楚你想要什么。你能改进你的例子吗?或者描述您的示例应该做什么。是否要更改按钮名称?编辑为小写buttonName。不要在属性/IVAR中使用大写字母,这会让人困惑。好的,我会尽量让它更清楚。我有一个看起来像房子的按钮和一个看起来像汽车的按钮。我希望用户单击其中一个按钮。如果他推房子,我希望出现一个名为“推房子”的标签。如果他推车,我希望“推车”出现。现在我想让标签显示为“pushedbuttonname”。我如何输入我按下的按钮的名称,并使属于它的标签出现?我试试Thilina Hewagama AnswerWORKS!非常感谢你