2013-10-31 3 views
1

이 질문에 @Midhun MP의 도움을 받아 UButton의 하위 뷰로 custombadge를 적용했습니다 - Adding a subview to UIButton.동적으로 생성 된 UIButton 제거하기 하위 뷰

위대한 작품 -하지만 지금 버튼을 클릭하면 하위보기를 제거하려고합니다.

내가 설정을했습니다 방법은 버튼

- (void)hide 
{ 
    //Hide Buttons 
    _importantMsg.hidden = YES; 


    [CustomBadge removeFromSuperview]; 

} 

하지만 하위 뷰를 숨기기 위해 사투를 벌인거야 중 하나에 클릭을 통해 트리거 이잖아 - 내가 해봤 -

[CustomBadge removeFromSuperview]; 

_MsgHeadBtn.subviews.hidden = YES;; 

그러나 나는 알 수없는 수신기 오류가 발생합니다 .- 누군가 올바른 방향으로 나를 가리킬 수 있습니까? 당신이 태그가 다음 버튼 viewForTag 방법을 사용하는 뷰를 제공 대안을 제거 바르거나 할 수 있습니다

enter image description here

+0

우리 어떤 오류를 표시 할 수 있습니다 제거 :이 사용자 정의보기를 추가하는 데 사용? –

+0

removeFromSuperview가 작동합니다. –

+0

@JayGajjar - 예 - 방금 스크린 샷을 추가했습니다 – Dancer

답변

2

당신은 사용자 정의보기에 대한 참조 중 하나가 필요합니다 - 각

오류가 아래 스크린 샷에서 쇼를보십시오 그런 식으로 제거하십시오. 이

@implementation ViewController { 
    UIView *_customView; 
} 

-(void)addCustomsubView 
{ 
    _customView = [UIView alloc] init …./ your initialize 

    [button addSubView:_customView]; 
} 

- (void)hide 
{ 
    [_customView removeFromSuperView]; 
    _customView = nil; 
} 
+0

안녕하세요 darren이 모든 것은 숨기기 부분과 떨어져 있습니다 - 어느 – Dancer

+0

시도 _customView.hidden = YES; 숨겨진 지 확인해보십시오. 그렇다면 슈퍼 뷰에서 customView를 제거한 무언가가 완벽하게 작동하는 – darren102

+0

문제입니다. 숨겨진 = 예를 사용하는 것이 문제일까요? – Dancer

1

시도 동적으로 버튼을 생성하는 경우, 버튼을 참조 할 수있어서.

-(void)hide:(UIButton *)sender 
{ 
    for(UIView *viewRef in sender.subviews) 
    { 
    if(viewRef isKindofClass:[CustomBadge class]) 
    { 
     [viewRef removeFromSuperview]; 
    } 
    } 

} 
+0

이것이 좋은 방법입니다. –

0

첫 번째 문제는 _MsgHeadBtn.subviews.hidden = YES입니다. .subviews는 setHidden 선택기를 수행 할 수없는 배열입니다. 두 번째 쟁점은 즉시 제거하는 경우보기를 숨길 필요가 없다는 것입니다. 세 번째 문제는 그 것입니다

[CustomBadge removeFromSuperview]; 

CustomBadge는 개체, 클래스의 인스턴스가 아닙니다. 이론적 인 접근 방식은 다음과 같습니다.

0

맞춤형 하위 뷰에 태그를 사용하여 나중에 제거 할 수 있습니다.

customBadge1.tag=1; 
[_MsgHeadBtn addSubview:customBadge1]; 

를이는

customBadge=[_MsgHeadBtn viewWithTag:1]; 
[customBadge removeFromSuperview] 
관련 문제