首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关联UIButton

关联UIButton
EN

Stack Overflow用户
提问于 2012-07-13 15:49:19
回答 1查看 112关注 0票数 0

我正在构建一种带有许多am按钮的检查表,我使用的是代码(而不是IB)。我希望当某些按钮被选中时,不能选择其他按钮。例如,我有一行按钮,将是低、中、高的。我不想让用户选择其中的2个选项(如果他们想改变他们的选择,没关系,一次只选2个)。

我知道我的方法的总体结构,下面是我到目前为止的情况:

-(void)addButtons --这是我将用按钮填充视图的地方(这里只显示一个按钮,但有很多):

代码语言:javascript
复制
-(void)addButtons{

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button addTarget:self action:@selector(clicked:) forControlEvents:UIControlEventTouchUpInside];
    [button setTitle:@"" forState:UIControlStateNormal];
    button.frame = CGRectMake(209, 54, 127, 18);
    button.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [imageView addSubview:button];

}

-(void)clicked:(UIButton *)sender --这是单击按钮时将被调用的方法。我希望它作为一个参数提交自己。然后,该按钮将更改其外观以表示已被单击。我之所以让它变得透明,是因为我在图片上有按钮,你需要看到它们下面的是什么。我也不认为sender.backgroundColor = [UIColor redColor];会像我所希望的那样工作,但这不是重点。

代码语言:javascript
复制
-(void)clicked:(UIButton *)sender{

    sender.alpha = 0.5;
    sender.backgroundColor = [UIColor redColor];

    [self setRelatedButtons:sender];

}

-(void)setRelatedButtons',这是我将确保每组只选择一个按钮的方法

代码语言:javascript
复制
-(void)setRelatedButtons:(UIButton *)sender{

    //since I know this button is clicked
    //set related buttons to unclicked

}

总结一下,下面是我想知道的:

( 1)如何设置按钮的外观以保持选中?

2)我应该将什么传递给我的clickedsetRelatedButtons方法来识别当前按钮?现在我有按钮了,但是还有什么更好的吗?

3)联系某些按钮的最佳方式是什么?我可以为每一组按钮使用一个数组,但我希望有更好的方法。我可以使用typedef吗?(以前从未使用过)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-13 16:09:59

要设置按钮的外观以保持选中,您可以做许多不同的事情。你可以改变标签,背景色,文字颜色,什么的。可能会对此有所帮助。只要你知道,如果你想把这个提交到应用商店,你不能使用实际的选择状态来显示一个按钮已经被选中(所以不要做button.selected = YES)。苹果公司特别禁止这样做。

如果要取消选择所有其他按钮,只需在单击一个按钮时将所有按钮的外观设置为“不选中”。完成此操作后,将发送消息的按钮设置为selected (无论您从上面决定什么)。将您的按钮放在一个数组中,这样您就可以创建一个for循环来访问所有这些按钮(NSMutableArray将有助于addObject)。

要回答第二个问题,传递UIButton *本身是可以的(实际上只是传递一个指针)。它的优点是能够执行类似[button doSomething]的操作,而不必在数组或其他数据类型中找到它。

我不太清楚你的第三个问题是什么,但是如果你想要的话,你可以子类UIButton。每组按钮的数组听起来都是个好主意。你甚至可以做一个数组数组。或者,您可以使用方法创建带有数组的自定义holder类,以返回所需的内容。

如果使用数组,则可以向addButton方法传递一个整数,该方法告诉方法哪个数组(或复杂数组的一部分)放置按钮。

另外,尽量把你的问题保留在一件事上;如果人们必须回答多个问题,回答你的问题的可能性就小得多。你可以想问多少就问多少,只需分开问。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11473910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档