簡體   English   中英

檢測UIButton iOS的選定狀態

[英]Detect Selected State of UIButton iOS

如何檢測uibutton的選定狀態?

我有7個按鈕,並且使它們能夠一次切換或選擇多個按鈕。

我想知道當我按下完成按鈕時哪些按鈕處於選定狀態。

因此,如果選擇了M,T和W,那么我希望能夠在完成推送時檢測到它。

我目前在按鈕上放了一個標簽,然后調用一個方法取消選擇或選擇多個按鈕。

self.repeatOccurrenceFrequencyWeeklyTF = [[UITextField alloc]init];
self.repeatOccurrenceFrequencyWeeklyTF.frame = CGRectMake(80, 80, 32, 32);
self.repeatOccurrenceFrequencyWeeklyTF.delegate = self;
self.repeatOccurrenceFrequencyWeeklyTF.background = [UIImage imageNamed:@"repeatWeekly"];
self.repeatOccurrenceFrequencyWeeklyTF.font = [UIFont fontWithName:@"SegoeWP" size:15];
self.repeatOccurrenceFrequencyWeeklyTF.textColor = [UIColor appGreyText];
[self.repeatOccurrenceFrequencyWeeklyTF setValue:[UIColor colorWithRed:153/255.0 green:153/255.0 blue:153/255.0 alpha:1.0] forKeyPath:@"_placeholderLabel.textColor"];
self.repeatOccurrenceFrequencyWeeklyTF.placeholder = @"1";
UIView *leftView1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 12, self.repeatOccurrenceFrequencyWeeklyTF.frame.size.height)];
self.repeatOccurrenceFrequencyWeeklyTF.leftView = leftView1;
self.repeatOccurrenceFrequencyWeeklyTF.leftViewMode = UITextFieldViewModeAlways;
self.repeatOccurrenceFrequencyWeeklyTF.rightViewMode = UITextFieldViewModeAlways;
self.keyboardToolbar = [self createInputToolbar];
self.repeatOccurrenceFrequencyWeeklyTF.inputAccessoryView = self.keyboardToolbar;
self.repeatOccurrenceFrequencyWeeklyTF.delegate = self;
self.repeatOccurrenceFrequencyWeeklyTF.keyboardType = UIKeyboardTypeNumberPad;
self.repeatOccurrenceFrequencyWeeklyTF.enabled = NO;
[self.view addSubview:self.repeatOccurrenceFrequencyWeeklyTF];

// Now, in your button action handler, you can do something like this:
- (void)mondayButtonTouch:(UIButton *)aButton withEvent:(UIEvent *)event
{
aButton.selected = !aButton.selected;

if(aButton.tag == 111) {

}

if(aButton.tag == 222) {

}

if(aButton.tag == 333) {

}

if(aButton.tag == 444) {

}

if(aButton.tag == 555) {

}

if(aButton.tag == 666) {

}

NSLog(@"dsfdfdfsdfs %ld", (long)aButton.tag);
[aButton setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];

}

我將使用NS_ENUM (有助於保持美觀和可讀的代碼)和NSMutableArray來跟蹤所選按鈕。 聲明一個看起來像這樣的枚舉:

typedef NS_ENUM(NSInteger, Weekday) {
WeekdayMonday,
WeekdayTuesday,
WeekdayWednesday,
WeekdayThursday,
WeekdayFriday,
WeekdaySaturday,
WeekdaySunday
};

然后用正確的枚舉標記您的按鈕:

tuesdayButton.tag = WeekdayTuesday;

並檢查何時點擊按鈕,如果您的枚舉存在於數組中:

- (void)buttonTouch:(UIButton *)aButton withEvent:(UIEvent *)event
{
if ([array containsObject:@(aButton.tag)]){ //exists, remove it from array
    [array removeObjectIdenticalTo:@(aButton.tag)];
    }
}else{
    [array addObject:@(aButton.tag)];
}

}

一種可能是創建一個名為selectedButtonNSMutableArray 這樣做:

- (void)mondayButtonTouch:(UIButton *)aButton withEvent:(UIEvent *)event
{
    aButton.selected = !aButton.selected;

    if(!aButton.selected && selectedButton.containsObject(aButton.Tag)) {
        [selectedButton removeObject:aButton.tag];
    }
    else if(aButton.selected && !selectedButton.containsObject(aButton.Tag)) {
        [selectedButton addObject:aButton.tag];          
    }


    // do your stuff here
}

現在,在done按鈕單擊后,您已經選擇了所有按鈕thats標簽,這些按鈕可以通過selectedButton數組進行跟蹤。

您可以使用:

[self.view viewWithTag:yourTagHere]

您可以使用此:

for (UIButton *btn in [self.view subviews]) { // self.view (change it with your button superview)
    if ([btn isKindOfClass:[UIButton class]] && [btn isSelected] == YES) {
        // here you found the button which is selected
    }
}

[self.view viewWithTag:yourTagHere]取代

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM