1

これまでのところ、UINavigationController と 1 つの TableViewController を含む Storyboard があります。TableViewController は UITableViewController のカスタム クラスです。これをストーリーボードに設定します。didFinishLaunching の Appdelegate には、次のコードがあります。

NSLog(@"rootviewconroller: %@",self.window.rootViewController);

//CTCAEMainTableViewController *mainViewController = (CTCAEMainTableViewController *)self.window.rootViewController;
UINavigationController *mainNavigationController = (UINavigationController *)self.window.rootViewController;
CTCAEMainTableViewController *mainTableViewController =  (CTCAEMainTableViewController *) mainNavigationController.topViewController;
NSLog(@"table: %@",mainTableViewController);
NSLog(@"table: %@",mainTableViewController.testMethod);

CTCAEMainTableViewController は、私のカスタム UITableViewController です。

@interface CTCAEMainTableViewController : UITableViewController

しかし、返されるのは通常の UITableViewController だけであり、testMethod を呼び出そうとすると、実行時エラーが発生します: 認識されないセレクターがインスタンスに送信されました。

また、NavigationController の viewControllers メソッドで TableViewController にアクセスしてから、インデックス 0 のオブジェクトにアクセスしようとしました。同じことです。私のストーリーボードにはカスタムクラスが表示されているので、私は非常に混乱しています。

4

2 に答える 2

0

問題が見つかりました。ストーリーボードのデフォルト名でもあるメインストーリーボードに名前を付けたため、プロジェクトでストーリーボードを設定してもうまくいかないようでした。別の名前の新しいストーリーボードを作成し、他のすべてを同じ方法で行い、機能しました。

于 2013-03-29T16:54:35.960 に答える
0

ストーリーボードでコントローラーのサブクラスを変更しましたか?

カスタム テーブル ビュー コントローラー

「カスタム クラス」ボックスに、TVC が必要なサブクラスの名前を入力したことに注意してください。さらに、汎用 TVC をドラッグしてサブクラスを設定することで、ストーリーボード要素を作成しました。

于 2013-03-29T05:15:06.517 に答える