2011-12-19 107 views
1

我有三個UIButtons子類(RadioBox)。我正在努力使一次只能選擇三個RadioBox中的一個。爲此,我有兩個委託方法; radioSelectedState和radioUnselectedState。分別調用這些方法來選擇和取消選擇RadioBox。不幸的是,到目前爲止,我的代碼只允許一次選擇一個按鈕,但是如果我取消選擇當前選擇的按鈕,則按鈕取消選擇而不是保持相同的狀態。只允許選擇一個UIButton

請你能告訴我我哪裏出錯了嗎?

謝謝先進。

- (void) radioSelectedState:(RadioBox *) rb { 

    if (selectedRadios == nil) { 
     selectedRadios = [[NSMutableArray alloc] init]; 
    } 

    if ([selectedRadios count] == 0) { 
     [selectedRadios addObject:rb]; 
    } 

    else if ([selectedRadios count] == 1 && ![selectedRadios containsObject:rb]) { 
     [(RadioBox *) [selectedRadios objectAtIndex:0] setState:RadioBoxStateUnselected]; 

     [selectedRadios removeObjectAtIndex:0]; 

     [selectedRadios addObject:rb]; 

    } 

    else if ([selectedRadios count] == 1 && [selectedRadios containsObject:rb]) { 
     return; 
    } 

} 

- (void) radioUnselectedState:(RadioBox *) rb { 

    if ([selectedRadios count] == 1) { 
     return; 
    } 

    [selectedRadios removeObject:rb]; 

} 
+0

爲什麼不使用[分段控制(http://developer.apple.com/library/ios/#documentation/uikit/reference/UISegmentedControl_Class/Reference/UISegmentedControl.html )?它們是爲這種應用而設計的。 – Hyperbole 2011-12-19 17:10:52

+0

因爲分段控制與我試圖實現的完全無關。 – 2011-12-19 21:00:52

回答

0

添加一個新的方法,以您的協議

- (BOOL)radioCanUnselect:(RadioBox *)radioBox; 

調用此做任何取消選擇之前,控制器只需回覆YES/NO,然後你作出相應的反應。

你也可以做同樣的其他方式

- (BOOL)radioCanSelect:(RadioBox *)radioBox; 

,並添加規則,有多少被允許在一次

1

來選擇你可以很容易讓你的RadioBox對象一個NSArray和環內通過它每次被選中時,確保其他人都被取消選中。

是這樣的:

// This assumes you have your RadioBox objects inside an NSArray named radioBoxArray 
- (void)radioBoxTapped:(RadioBox *)rb { 
    for (RadioBox * box in radioBoxArray) { 
     [box setSelected:NO]; 
    } 

    [rb setSelected:YES]; 
} 
相關問題