我在constructor(props) {
super(props);
this.state = { fieldName : this.props.fieldname};
}
componentWillMount() {
//this.state.fieldName = this.props.fieldname;
//this.forceUpdate();
}
updateState(evt) {
//this.setState( {fieldName : evt.target.value} );
this.props.onChange( evt.target.id, evt.target.value );
}
render() {
return (
<div className={this.props.divClass}>
<hr />
<label> {this.props.labelName} </label>
<div>{this.props.fieldName}</div>
<div>{this.state.fieldName}</div>
<input
type="text"
id={this.props.id}
value={this.props.fieldName}
onChange={this.updateState.bind(this)}
className="form-control"
/>
</div>
)
}
方法中有一系列图像,如下所示:
viewDidLoad
此数组包含图像名称。
我在images = [NSArray arrayWithObjects:@"make_fun.png",
@"smile-2.png",
@"cream_happy_ice.png",
@"big_smile.png",
@"fun.png",
@"happy_santaclaus",
@"make_fun.png",
@"smile-2.png",
@"cream_happy_ice.png",
@"big_smile.png",
@"fun.png",
@"happy_santaclaus",nil];
上还有12个按钮,我标记了从0到11的所有按钮。
我想要实现的内容非常简单 - 当用户点击其中一个按钮时,其标签用作images阵列中的索引以设置按钮的背景。这是我的代码:
storyboard
但是我在编辑器中遇到了这个错误:
- (IBAction)onClickButton:(id)sender {
UIButton *button = (UIButton*)sender;
[button setImage:[UIImage imageNamed:[images objectAtIndex:[sender tag]] forState:UIControlStateNormal];
}
我看了很多关于stackoverflow的问题我无法找到解决方案。
感谢!!!
答案 0 :(得分:2)
尝试这种方式,使用[sender tag]
代替- (IBAction)onClickButton:(id)sender {
UIButton *button = (UIButton*)sender;
[button setImage:[UIImage imageNamed:images[button tag]]
forState:UIControlStateNormal];
}
--proving comm over *
*comm : ∀ a b → (a * b) ≡ (b * a)
*comm zero b = sym (rightId* b)
*comm (suc a) b = {!!}
答案 1 :(得分:0)
试试这个。在按钮上使用标记而不是发件人。它可能会帮助你。
- (IBAction)onClickButton:(id)sender {
UIButton *button = (UIButton*)sender;
[button setImage:[UIImage imageNamed:[images objectAtIndex:[button tag]] forState:UIControlStateNormal];
}
答案 2 :(得分:0)
问题是id
的通用类型sender
不知道属性tag
。
一个简单的解决方案是使用UIButton
作为参数类型
- (IBAction)onClickButton:(UIButton *)button {
button.image = [UIImage imageNamed:images[button.tag] forState:UIControlStateNormal];
}
和点符号避免了一堆括号。
答案 3 :(得分:0)
首先确保UIImage实例不是nil
UIImage *image = [UIImage imageNamed:[images objectAtIndex:[button tag]];
if (image) {
[button setImage:[UIImage imageNamed:[images objectAtIndex:[sender tag]] forState:UIControlStateNormal];
} else {
// something is wrong with the image you are trying to assign.
}
如果图片确实存在,请尝试在界面构建器中将按钮类型从System
更改为Custom