2013-09-17 3 views
0

Я пишу простое приложение, состоящее из 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. 
} 

ответ

0

Используйте теги вместо этого установить уникальный тег в обе кнопки и установите тег изображения на кнопку, что изображение будет принадлежать, в дальнейшем, сравнивать тэг как изображение, так и чтобы проверить, являются ли они такими же или нет.

https://developer.apple.com/library/ios/documentation/uikit/reference/uiview_class/UIView/UIView.html#//apple_ref/occ/instp/UIView/tag

+0

Я попытался это тоже, это не сработало. :( – user2771150

0

Я своего рода новым для Objective-C и IOS Aswell, но я не думаю, что вы должны сравнить, как это:

result == _tempButton[_correctButton] 

попробовать это сравнение вместо:

[result isEqual:_tempButton[_correctButton]] 
Смежные вопросы