这里是我的代码。UIButton performSelector:withObject:withObject:not making call
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(110, 270, 100, 40);
button.backgroundColor = [UIColor grayColor];
[button setTitle:@"next" forState:UIControlStateNormal];
[self.view addSubview:button];
我想通过这种方法 设置按钮标题的颜色,但它不工作!
[button performSelector:@selector(setTitleColor:forState:)
withObject:[UIColor blackColor]
withObject:@(UIControlStateNormal)];
有人知道为什么它不起作用?
谢谢大家的帮助。 昨天晚上,我找到了一种方法使它工作。无论参数是UIControlStateNormal(特殊情况)还是其他类似UIControlStateHighlighted。 这里是代码:
[button performSelector:@selector(setTitleColor:forState:)
withObject:[UIColor blueColor]
withObject:(__bridge id)((void *)UIControlStateNormal)];
[button performSelector:@selector(setTitleColor:forState:)
withObject:[UIColor blackColor]
withObject:(__bridge id)((void *)UIControlStateHighlighted)];
[button performSelector:@selector(setTitleColor:forState:)
withObject:[UIColor redColor]
withObject:(__bridge id)((void *)UIControlStateSelected)];
所以问题就解决了。
我发现它很有用!所以,我想用它做更多的事情, 下面是代码:
[button.layer performSelector:@selector(setMasksToBounds:) withObject:(__bridge id)((void *)YES)];
[button.layer performSelector:@selector(setCornerRadius:) withObject:(__bridge id)((void *)5)];
[button.layer performSelector:@selector(setBorderWidth:) withObject:(__bridge id)((void *)5)];
[button.layer performSelector:@selector(setBorderColor:) withObject:(__bridge id)(__bridge CGColorRef)[UIColor greenColor]];
当我测试,我发现它不会再工作!太失望了:(。如果有人有兴趣在这个问题上,你可以测试它。
你确定从主线程调用了performSelector吗? –
为什么要在主线程中调用? –
是否调用setTitleColor:forState:如果直接调用工作? – Eiko