2017-11-03 9 views
0
から削除された後のUIViewController viewWillAppearが実行されませんなぜ

私はこのがサブビューはスーパービュー

- (IBAction)transactionListViewCameraBtn_Pressed:(id)sender { 

    if([NWTillHelper isDebug] == 1) { 
     NSLog(@"%s entered", __PRETTY_FUNCTION__); 
    } 

    self.capture = [[ZXCapture alloc] init]; 
    self.capture.camera = self.capture.back; 
    self.capture.focusMode = AVCaptureFocusModeContinuousAutoFocus; 

    [self.view.layer addSublayer:self.capture.layer]; 

    self.capture.delegate = self; 

    [self applyOrientation]; 
} 

問題のようにのUIViewControllerにサブレイヤをやっていることは、私はサブレイヤを削除すると、私は、元のビューのviewWillAppearを実行するために期待するということですが、そうではありません。

私はこの

[self.capture.layer removeFromSuperlayer]; 

のようなサブレイヤを削除していますviewWillAppearオリジナルのビューが再び表示されたときに実行することになっていませんか?

もし私がsubLayerを削除したときに私がviewWillAppearで持っているコードを確実にするにはどうすればいいですか?

+0

'viewWillAppear'は、他のコントローラに行って再び戻るときに呼び出されます。スーパーレイヤーを削除しているだけなので、呼び出されません。 –

+0

あなたはこのようにすることができます.. 2つのボタンを開始し、キャンセルします。開始はレイヤを追加し、キャンセルをクリックするとレイヤが削除されます。 –

答えて

0

推奨されるように、ビューのライフサイクルを理解するためにApple docを確認してください。 そして、あなたは新しい方法であなたのviewWillAppearコードを置くことができます。

-(void)yourFunctionName { 
    //your code here 
} 

そして、あなたが必要な場所にそれを呼び出します。

しかし、おそらくレイアウトを更新する必要がある場合は、setNeedsLayoutlayoutIfNeededの方法を確認できます。

関連する問題