UITableViewController
内にありますUIViewController
。このテーブルビューコントローラーだけが関係していましたが、ユーザーが行をタップすると、ビューがうまくプッシュされていました。ただし、に含まれる2つのうちの1つに移動してからUIViewController
、行のタップは突然何もしません。
私は周りを検索してみましたが、この問題に遭遇したのは私が最初ではありませんが、どの回答も私の状況に合わないか、質問に有効な回答がありません。そのリンクは私が見つけた最も近いものでしたが、ストーリーボードは使用していません。個別のXIBを使用しています。
では、ビューコントローラ内のビューコントローラから新しいビューをプッシュするにはどうすればよいですか?
要点をまとめると:
これが私が持っていたものであり、ユーザーを新しい画面に誘導するのにうまくいきました!
// Normal table behavior, as illustrated by [another question][2]. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { SomeView *detailViewController = [[SomeView alloc] initWithNibName:@"SomeView" bundle:nil]; // Pass the selected object to the new view controller. [self.navigationController pushViewController:detailViewController animated:YES]; }
これで、ビューのプロパティとしてviewcontrollerが作成されました。上記のコードは、tableviewcontrollerのファイルにあり、「メイン」ビューにはありませんが、新しい画面は表示されなくなりました。
コメントありがとうございます!これが私のシナリオを明確にするためのコードです。
コントローラ内のコントローラ。これは、私がコンセプトをテストするために使用しているテストプロジェクトのファイルです。この場合、tableviewコントローラー内にtableviewコントローラーがあります。
@interface SimpleTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> // This is the controller within the controller @property IBOutlet SecondTableViewController *secondTableController; @property IBOutlet UITableView *secondTable;
私
SecondTableViewController
はこの楽しいビットを持っています。- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Navigation logic may go here. Create and push another view controller. UIViewController *detailViewController = [[UIViewController alloc] initWithNibName:@"SimpleNonTableViewController" bundle:nil]; // ... // Pass the selected object to the new view controller. [manualViewControllerParent.navigationController pushViewController:detailViewController animated:YES]; }
ユーザーが操作するビューはに接続されていSimpleTableViewController
ます。このように、SecondTableViewController
は「内」SimpleTableViewController
です。詳細が必要な場合は、お気軽にコメントしてください。
テスト/コンセプトプロジェクトをgithubに配置しました。 https://github.com/hyliandanny/TableViewCeption