2012-06-27 2 views
0

В моем описании IF, его странном, вызывающем, каждый раз, когда мой код обходит его, только SLOT1 вызывается и отображается в моем отладчике, почему это так? Что-то не так с моим заявлением? Благодарю.Оператор IF, сравнивающий

choiceSlot1 = TRUE; 
    choiceSlot2 = TRUE; 
    choiceSlot3 = TRUE; 
    choiceSlot4 = TRUE; 

    if (slot1 != [(UIImageView*)[self.carousel1 currentItemView] tag] || twoSlot1 != [(UIImageView*)[self.carousel2 currentItemView] tag] || choiceSlot1) { 

     NSLog(@"Slot1"); 
     choiceSlot1 = FALSE; 

    } 
    else if (slot2 != [(UIImageView*)[self.carousel1 currentItemView] tag] || twoSlot2 != [(UIImageView*)[self.carousel2 currentItemView] tag] || choiceSlot2) { 

     NSLog(@"Slot2"); 
     choiceSlot2 = FALSE; 


    } 
    else if (slot3 != [carousel1 indexOfItemViewOrSubview:carousel1.superview] || twoSlot3 != [(UIImageView*)[self.carousel2 currentItemView] tag] || choiceSlot3) { 

     NSLog(@"Slot3"); 
     choiceSlot3 = FALSE; 


    } 
    else if (slot4 != [(UIImageView*)[self.carousel1 currentItemView] tag] || twoSlot4 != [(UIImageView*)[self.carousel2 currentItemView] tag] || choiceSlot4) { 

     NSLog(@"Slot4"); 
     choiceSlot4 = FALSE; 

    } 
+2

Ну, вы выбираете choiceSlot1 как истину каждый раз, поэтому он всегда входит в первую, если. – borrrden

+0

'choiceSlot1' всегда TRUE .. – Kjuly

+0

Что делать для остальной части оператора if, который вызывается? – Bazinga

ответ

1

Поскольку else if только подтверждено в случае первой if утверждение false.

Пример:

if (true) 
{ 
    // Will be executed 
} 
else if (true) 
{ 
    // Will not be executed 
} 

if (false) 
{ 
    // Will not be executed 
} 
else if (true) 
{ 
    // Will be executed 
} 
+0

Что мне делать для остальной части оператора if? – Bazinga

+1

Удалите 'else' перед' if'. Другими словами, сделайте четыре отдельных оператора 'if'. – Anne

+0

Да, тогда во всем его регистрируется. – Bazinga

1

Это легко,

if (slot1 != [(UIImageView*)[self.carousel1 currentItemView] tag] || twoSlot1 != [(UIImageView*)[self.carousel2 currentItemView] tag] || choiceSlot1) 

Если choiceSlot1 ИСТИНА, то первое утверждение всегда будет истинным (с OR, его истинным, если один из элементов правда).

Когда первое утверждение истинно, тогда остальная часть else/if не вызывается!

Смежные вопросы