• ベストアンサー

iPhoneアプリの開発についてです。

NavigationControllerでstoryboardで生成したコントローラにUITableViewControllerをコードで生成し画面遷移しているのですが、コード生成したコントローラは画面遷移した際にviewWillAppearやviewWillDisappearなどが呼び出されません。 コードで生成したコントローラのviewWillAppearやviewWillDisappearはどうやって検知すればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

No.1です。 > self.nextDir = [[UITableViewController alloc] init]; これ、前回の質問の http://bekkoame.okwave.jp/qa8606021.html 回答No.2で回答したことが全く理解されておらず、 同じ事をして同じ問題でつまずいているように 見えるのですが。 self.nextDir = [[自作クラス名 alloc] init]; としないと、自分で作ったクラスの viewWillAppearは呼ばれませんよ。 No.1で回答で > 自分で作ったテーブルビューコントローラーではなく > UITableViewControllerが動いているだけという > 話は無いでしょうか? と書いたのも同じ意味です。 クラスやインスタンスの基礎を理解できていますか?

nylonraw999
質問者

お礼

解決しました、ありがとうございました。 以前の質問を見返してみたところおっしゃる通り、同じようなところでつまずいていたようです。 まだまだ理解が乏しく応用もきかない状態なので今後精進致します。

その他の回答 (1)

回答No.1

具体的にどんなコードで生成しているのかわかりませんが、 ちゃんと表示されているのにviewWillAppearや viewWillDisappearなどが呼び出されないというのは 普通あり得ません。 自分で作ったテーブルビューコントローラーではなく UITableViewControllerが動いているだけという 話は無いでしょうか? storyboardで定義したテーブルビューコントローラーのClass設定は、 UITableViewControllerのままではなく、今回自分が作った (viewWillAppearやviewWillDisappearが書かれている) クラスの名前を指定していますか?

nylonraw999
質問者

補足

補足遅れました、すみません。 まずストーリーボードにDirectoryViewControllerというクラスが設定されているテーブルビューコントローラが作成されているとして、そのクラスに self.nextDir = [[UITableViewController alloc] init]; self.nextDir.tableView.frame = CGRectMake(0, 64, 320, 524 - 64); self.nextDir.tableView.delegate = self; self.nextDir.tableView.dataSource = self; self.nextDir.tableView.rowHeight = 70; といったようなコーディングをして画面遷移をしています。 もちろん画面遷移をすればDirectViewControllerはviewWillDisappearが呼ばれますがnextDirはviewWillAppearが呼ばれません。 nextDirもストーリーボードで作りたかったのですが、コードの都合上うまくいかなかったので何とか今の状態で問題を解決したい所存です。

関連するQ&A