簡體   English   中英

刪除UIButton的子視圖

[英]Remove Subview of UIButton

當用戶按下按鈕時,im會一遍又一遍地運行相同的代碼。 如果用戶按下按鈕,則圖像會出現在按鈕上方,如果再次按下按鈕,則圖像將從按鈕子視圖中刪除。

這是我的代碼:

 UIImageView *overlay = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"OverlayImage.png"]];

    NSString *senderstag = [NSString stringWithFormat:@"%i", buttonFromSender.tag];
    if([[dictonaryOfImagesToDelete allKeys] containsObject:senderstag]){
        [[buttonFromSender subviews]makeObjectsPerformSelector:@selector(removeFromSuperview)]; 
    }
    else{
    [buttonFromSender addSubview:overlay];
    }
    NSString *imageName = [[NSString alloc]init];
    imageName = [arrayWithImageNames objectAtIndex:buttonFromSender.tag];

    [imagesToDelete addObject:imageName];

    [dictonaryOfImagesToDelete setObject:imagesToDelete forKey:[NSString stringWithFormat:@"%i", buttonFromSender.tag]];

我使用字典來跟蹤已按下的按鈕。 而不是刪除按鈕上的imageview,而是刪除整個按鈕。 我如何才能僅刪除imageview而不是按鈕?

感謝:D

如果要為按鈕狀態顯示不同的圖像,則可以直接初始化按鈕以在該狀態下加載圖片。 例如說啟用/禁用,或選中/取消選中(正常)

UIButton* myButton = [UIButton buttonWithType:UIButtonTypeCustom];    
[myButton setImage:[UIImage imageNamed:@"My Image"] forState:UIControlStateNormal];
[myButton setImage:[UIImage imageNamed:@"My Other Image"] forState:UIControlStateSelected];
[myButton setBackgroundImage:[UIImage imageNamed:@"BG Img"] forState:UIControlStateNormal];

參考文獻:

背景圖片: http : //developer.apple.com/library/IOS/documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html#//apple_ref/occ/instm/UIButton/backgroundImageForState

按鈕圖片: http : //developer.apple.com/library/IOS/documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html#//apple_ref/occ/instm/UIButton/setImage : forState

我最終完成了疊加層的UIImageview,即UIButton。 這允許為其設置操作。 這是使用的代碼:

        UIImage *image = [UIImage imageNamed:@"OverlayImage.png"];
    UIButton *overlay = [[UIButton alloc]init];
    overlay.frame = CGRectMake(0, 0, 100, 150);
    [overlay setImage:image forState:UIControlStateNormal];
    [overlay addTarget:self action:@selector(removeSelectedImage:) forControlEvents:UIControlEventTouchUpInside];
    overlay.tag = buttonFromSender.tag;


    [buttonFromSender addSubview:overlay];

    NSString *imageName = [[NSString alloc]init];
    imageName = [arrayWithImageNames objectAtIndex:buttonFromSender.tag];

    [imagesToDelete addObject:imageName];

    [dictonaryOfImagesToDelete setObject:imageName forKey:[NSString stringWithFormat:@"%i", buttonFromSender.tag]];

這將設置新的UIButton

然后擺脫UIButton我這樣做:

-(IBAction)removeSelectedImage:(id)sender{
UIButton *button = (UIButton *)sender;
[button removeFromSuperview];
NSString *tag = [NSString stringWithFormat:@"%i", button.tag];
NSString *deleteWhat = [[NSString alloc]init];
deleteWhat = [dictonaryOfImagesToDelete objectForKey:tag];
[imagesToDelete removeObject:deleteWhat];
[dictonaryOfImagesToDelete removeObjectForKey:tag];
}

暫無
暫無

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

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