0

縦向きのアプリがあり、View Controller (UIViewControllerではなく) に、画面の半分しか占有しないUITableViewControllerテーブル ( ) があります。UITableViewテーブル ビューのデリゲートとデータソースをビュー コントローラーに設定しました。

今、テーブルのセルを選択したときに詳細ビューを表示したいと思います。これが私が試したものですが、何も表示されません:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

NSLog(@"SELECTED");

//ChangeView

DetailViewController *dvController = [[DetailViewController alloc]
initWithNibName:@"DetailViewController" bundle:nil];

[self.navigationController pushViewController:dvController animated:YES];
dvController = nil;

}

何か案が?このソリューションはポップアップ ソリューションより優れていますか?

4

5 に答える 5

2

[NSBundle mainBundle]nilの代わりに置きます。それが役に立てば幸い。何が起こるか教えてください!またdvController=nil;[dvController release];

編集: urinit関数を次の関数に置き換えます。

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
return self;
}
于 2012-05-02T10:30:50.853 に答える
2

テーブルビューをnibファイルでチェックし、データソースとデリゲートが接続されているかどうかを確認する必要がありますか?両方をファイル所有者に接続するだけです。

uiviewコントローラーを使用している場合は、modelviewコントローラーをプッシュするのではなく、現在のモデルビューコントローラーを使用します。

DetailViewController *dvc=[[DetailViewController alloc]initWithNibName:@"DetailViewController" bundle:nil];
[self presentModalViewController:dvc animated:YES];
于 2012-05-02T10:32:08.450 に答える
1

didSelectRowAtIndexPathテーブルセルを選択するときに、本当に呼び出されているか どうかを確認する必要があります(そうでない場合は、デリゲートが正しく設定されていない可能性があります)。

DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];

問題に近づこうとして、デバッガーでnilまたは何か意味のあるものを返します。また、@ MAKhanは正しかったので、削除する必要があります

dvController = nil;

と置き換えます

[dvController release];

メインビューで参照を放棄します。

編集: コードでは、を使用しているため、UIViewControllerの下にUINavigationControllerがあると想定しています[self.navigationController pushViewController]。存在しない場合でも、存在しないものにビューがプッシュされないのも不思議ではありません。

于 2012-05-02T11:01:21.423 に答える
1

ナビゲーション コントローラを初期化します。初期化されていないUIコンポーネントが原因であるためです。ただし、他のUIの問題に直面する必要があるかもしれないことを覚えておいてください

于 2012-05-02T10:50:03.207 に答える
0

ナビゲーションコントローラーにテーブルビューを備えたビューコントローラーはありますか?そうでない場合は、最初に現在のビューコントローラーをルートビューコントローラーとして使用してナビゲーションコントローラーを作成する必要があります。次に、uが現在使用しているこのコードを試してください。

于 2012-05-02T10:45:40.920 に答える