Я пишу простое приложение, состоящее из 2 UIImageViews
и 2 UIButtons
. UIImageViews
размещены сверху UIButtons
.Сравнение UIButtons с UIImageViews
У меня есть 1 UIImage
, что появляется на случайном UIImageView
и исчезает через 2 секунды. Затем пользователь должен нажать кнопку, на которой, по их мнению, появится изображение.
Я перетасовываю массив UIImageView
и использую первый элемент (индекс 0) для изображения, которое будет отображаться. При перетасовке я отслеживаю, какой элемент (т. Е. Из какого индекса, скажем, из индекса «n») помещался в индекс 0 массива.
Однако, когда нажата кнопка, сравните идентификатор кнопки, нажатой с идентификатором кнопки с индексом n. (потому что это индекс случайного UIImageView
). Но по какой-то причине он не работает. :(
Это мой код: (я не загружал файл .h, он просто содержит декларации.) Код ниже не содержит никаких сообщений об ошибке/предупреждении. Он просто не выводит результат Я хочу.
@interface ViewController()
@property (strong, nonatomic) NSMutableArray* tempButton;
@property (strong, nonatomic) NSMutableArray *tempViews;
@property (strong, nonatomic) UIImage *myImage;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
_myImage = [UIImage imageNamed:@"hello"];
_tempButton = [[NSMutableArray alloc] initWithObjects:_button1, _button2, nil];
_tempViews = [[NSMutableArray alloc]initWithObjects:_image1, _image2, nil];
[self displayonView];
}
-(void)displayToFindSymbol{
[_toFindImage setImage:_myImage];
_toFindImage.contentMode = UIViewContentModeScaleAspectFit;
}
- (IBAction)pressed:(id)sender {
UIButton *result = (UIButton *)sender;
if (result == _tempButton[_correctButton]) {
NSLog (@"Correct");
}
else if (result != _tempButton[_correctButton]){
NSLog (@"Incorrect");
}
}
-(NSMutableArray *)shuffleViews{
NSUInteger count = _tempViews.count;
int n;
for (int i=count-1; i>=0; --i) {
n = arc4random() % (i + 1);
[_tempViews exchangeObjectAtIndex:n withObjectAtIndex:i];
}
_correctButton = n;
return _tempViews;
}
-(void)displayonView{
NSMutableArray *tempArray;
tempArray = [self shuffleViews]; // shuffle views
_correctImage = [tempArray objectAtIndex:0];
_correctImage.contentMode = UIViewContentModeScaleAspectFit;
[_correctImage setImage:_myImage];
NSTimer* myTImer;
myTImer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(hideLabel) userInfo:nil repeats:NO];
}
-(void) hideLabel{
_correctImage.hidden = YES;
for (UIButton *each in self.tempButton) {
each.enabled = YES;
}
[self displayToFindSymbol];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
Я попытался это тоже, это не сработало. :( – user2771150