我有一个viewController,其中UIImageView每隔10秒在不同的图像之间转换。这很有效,直到我尝试添加两个以上的图像。我不确定我在这里做错了什么,但是我得到了错误:"没有已知的选择器类方法' imageNamed ::'
这些是我的方法:
带有计时器的viewDidLoad:
- (void)viewDidLoad {
i = 0;
[NSTimer scheduledTimerWithTimeInterval:10.0 target:self
selector:@selector(swapImage) userInfo:nil repeats:YES];
}
以下是适用于两张图片的代码:
- (void)swapImage {
background.image = [UIImage imageNamed:(i % 2) ? @"authBg1.png" : @"authBg2.png"];
CATransition *transition = [CATransition animation];
transition.duration = 1.0f;
transition.timingFunction = [CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
[background.layer addAnimation:transition forKey:nil];
i++;
}
如果我更改第一个background.image行添加新图片,我会收到错误:
background.image = [UIImage imageNamed:(i % 3) ? @"authBg1.png" : @"authBg2.png" :
@"authBg3.png"];
为什么这可能不起作用的任何想法?谢谢!
答案 0 :(得分:2)
不幸的是,三元运营商只能支持2个条件。
如果您需要更多2个条件,请使用if语句。
如果/其他
if(i%2 == 0){
}elseif(i%3==0){
}else{
}
但如果你真的想要三元,那么你可以通过它更难以阅读
来嵌套它们background.image = [UIImage imageNamed:(i % 2) ? @"authBg1.png" : (i % 3) ?@"authBg3.png" : @"authBg2.png"];