0

アプリ用のカスタム Segue があります。アプリの左側にはタブ バーがあり、その上に 5 つのボタンがあります。メイン ビュー TDViewController には、UIViewController (UIViewController * currentViewController) と UIView (View * placeholder) があります。カスタム セグエに以下のコードを使用します。

@implementation TDCustomTabBarSegue
- (void) perform {

    TDViewController *vc = (TDViewController *)self.sourceViewController;
    UIViewController *dstVC = (UIViewController *) self.destinationViewController;

    for(UIView *view in vc.placeholder.subviews){
        [view removeFromSuperview];
    }

    vc.currentViewController = dstVC;
    [vc.placeholder addSubview:dstVC.view];
}

現在のプレースホルダー ビューでボタンをクリックしようとするまでは、すべて問題ありません。[MyViewController performSelector:withObject:withObject:]: message sent to deallocated instance 0x7562e70 というエラーが表示されます

View Controller が保持されていないと思いますが、問題を解決する方法がわかりません。

編集 -- 追加情報

TDTViewController.m
...
- (IBAction)modeButtonClicked:(id)sender; //hooked up to storyboard

TDTViewController.m
...
- (IBAction)modeButtonClicked:(id)sender {
    //hooked up to storyboard
}

この問題は、私の UIButton に限定されたものではありません。プレースホルダー ビューで任意のコントロールを操作すると、同じ割り当て解除されたインスタンス エラーでアプリがクラッシュします。

プロファイラーは、TDTViewController でゾンビを表示します。イベント タイプ = Malloc、RefCt = 1、責任ある発信者 = -[UIClassSwapper initWithCoder:]

4

1 に答える 1