0

은 내가 subview 내부에 다음과 같은 방법이 있습니다viewController 전환이 완료된 후 removeFromSuperview.

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self.delegate performSegueWithIdentifier:@"segueAdicionarRefeicaoSearch" sender:[NSString stringWithFormat:@"%@", self.arrayLabels[indexPath.row]]]; 
    // Remove from Superview 
    [self.view removeFromSuperview]; 
} 

이것이 코드 발생하면 performSegue 애니메이션이 완료되기 전에보기가 제거됩니다 및 시각적 효과가 매우 좋지 않은 것입니다.

[self.view performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.25f];

하지만 그 애니메이션의 TimeInterval을 선택 너무 정비사 생각 :

나는 하나 개의 솔루션은 다음과 같이 뷰를 제거하는 것입니다 알고있다. 내가 사용할 수있는 것과 다른 뭔가가 있습니까?

내비게이션 스택에서 subview 색인을 얻을 수 있으며 다음보기의 viewDidAppear에 도달하면 색인을 제거 할 수 있습니다. 그러나 나는 이것이 훨씬 더 복잡 할 것이라고 생각한다.

아이디어가 있으십니까?

+2

왜 그것을 제거해야합니까? 왜'viewDidDisappear :'아닌가요? – Wain

+0

다른'보기 '위에 내 화면의 절반을 차지하는'하위보기'입니다. 다른 뷰로 이동하여 다시 돌아온 후에이 하위 뷰는 여전히 존재합니다. 그래서 내가 제거해야 할 필요가 있다고 생각합니다. 내가하지 않니? 또는 나는 무엇인가 놓치고 있냐? 감사. – Jorge

+0

의 하위보기가 무엇인지 알지 못해도 알 수 없습니다. 여전히 요구 사항을 기반으로해야합니까? 그렇지 않다면 ... – Wain

답변

2

보기가 무엇인지 또는 제거해야하는 이유에 따라 하나의 옵션은 - (void)viewDidDisappear:(BOOL)animated에서 호출 할 수 있습니다. 왜 컨트롤러에서보기를 제거해야하는지 모르겠지만이 방법은 애니메이션.

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [super viewDidDisappear:animated]; 

    [self.whateverView removeFromSuperview]; 
} 

편집 : 당신의 응답을 바탕으로 , 당신은 또한 viewWillAppear에서 할 수 있습니다 : 당신이 당신의 ViewController로 되돌아 경우에만 당신이 그것을 원하지 않는 것처럼 소리 때문에

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear]; 

    [self.whateverView removeFromSuperview]; 
} 
+0

다른'보기 '위에 내 화면의 절반을 차지하는'하위보기'입니다. 다른 뷰로 이동하여 다시 돌아온 후에이 하위 뷰는 여전히 존재합니다. 그래서 내가 제거해야 할 필요가 있다고 생각합니다. 내가하지 않니? 또는 나는 무엇인가 놓치고 있냐? 감사. – Jorge

+0

좋아요, 그렇다면 self.view가 아니라 self.mycustomview 또는 그게 무엇이든해야합니다. viewControllers보기를 제거하지 않으려 고합니다. – Eric

관련 문제