0

テーブル ビューがあり、項目の 1 つを選択すると、詳細を表示するために EventsDetailsViewController ストーリーボードに移動する必要がありますが、テーブル ビューで項目の 1 つをクリックしても何も起こりません。以下は、選択されたときにユーザーを EventsDetailsViewController に送信すると思われるコードですが、そうではありません。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    EventsDetailsViewController *eventsdetailsViewController = [[EventsDetailsViewController alloc]
    initWithNibName:@"EventsDetailsViewController" bundle:nil];
    eventsdetailsViewController.title = [[events objectAtIndex:indexPath.row] objectForKey:@"eName"];
    eventsdetailsViewController.eventsArticle = [events objectAtIndex:indexPath.row];
    [self.navigationController pushViewController:eventsdetailsViewController animated:YES];

}
4

2 に答える 2

1

考えられる問題は次のとおりです。

  1. アプリケーションがナビゲーション コントローラ ベースではありません。Xib、ストーリーボード、またはプログラムでナビゲーション コントローラーを作成したかどうかを確認してください。

  2. EventsDetailsViewController はまったく作成されていません。ブレークポイントを設定するか、オブジェクトをログに記録して、これが作成されているか、単に nil であるかをテストします。

以下のステートメントを使用して、両方のケースを簡単に確認できます。

NSLog("Navigation COntroller %@",self.navigationController);
NSLog("Events COntroller %@", eventsdetailsViewController);

ABCController が、テーブル ビュー デリゲート メソッドが存在するコントローラーであり、そこから EventsDetailsViewController に移動するとします。既存のプロジェクトにナビゲーション コントローラーを追加する:

アプリ デリゲートでナビゲーション コントローラー オブジェクトを作成し、これを rootViewController として設定します。

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    UINavigationController *navigationController = [[UINavigationController alloc]initWithRootViewController:rootController];
self.window.rootViewController = navigationController;
    [self.window makeKeyAndVisible];
 return YES;
}
于 2013-09-17T06:23:36.310 に答える
0

の問題ではありません。問題はtableViewにありnavigationControllerます。nil であるかどうかを確認し、nil のdebug area 場合は初期化します。

これがあなたを助けることを願っています。

編集: NavigationController を宣言する方法

AppDelegate.mこれをファイルに追加

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    ParentViewController *parent = [[ParentViewController alloc]init];
    UINavigationController *myNav = [[UINavigationController alloc]initWithRootViewController:parent];
    self.window.rootViewController = myNav;
    [self.window makeKeyAndVisible];
    return YES;
}
于 2013-09-17T08:32:10.800 に答える