1

こんにちは、みなさん。単純なUINavigationControllerをタブバーアプリケーションに組み込んでいます。私はTabBarをルートコントローラーとして設定していますが、すべて正常に動作しているようです。このメソッドは正しく呼び出され、壊れることはありませんが、詳細ビューには変更されません。私はこれで完全に迷子になっています。

私はこのビデオの指示に従いました:http ://www.youtube.com/watch?v = LBnPfAtswgw&feature = player_embedded# 。達成しようとしていることで動作するようにいくつかの変更を加えましたが、基本的なロジックは同じままにしました。彼女はSDK2.*を使用しており、私は3.*を使用しています。これはそれと関係があると思います。誰かが私を助けることができますか?これは私のdidSelectRowAtIndexPathがどのように見えるかです:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Navigation logic may go here. Create and push another view controller.
 NSInteger row = [indexPath row];
 if(self.detailViewController == nil) {
  LogEntryDetailViewController *logEntryDetail = [[LogEntryDetailViewController alloc]
              initWithNibName:@"LogEntryDetailView" bundle:[NSBundle mainBundle]];
  self.detailViewController = logEntryDetail;
  [logEntryDetail release];
 }

 detailViewController.title = [NSString stringWithFormat:@"%@", [logEntriesArray objectAtIndex:row]];

 ProgNameAppDelegate *delegate = (ProgNameAppDelegate *)[[UIApplication sharedApplication] delegate];
 [delegate.logViewNavController pushViewController:self.detailViewController animated:YES];
}

私はここでおかしくなります。これを別の場所に投稿する必要がある場合は、喜んで投稿します。前もって感謝します!

4

1 に答える 1

1

これらの行を変更する必要があります。

ProgNameAppDelegate *delegate = (ProgNameAppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate.logViewNavController pushViewController:self.detailViewController animated:YES];

これとともに:

[self.navigationController pushViewController:detailViewController animated:YES];

あなたが言うようにタブバーコントローラーを持っているなら、あなたを押すことdetailViewControllerdelegate.logViewNavControllerおそらく間違ったことです(何delegate.logViewNavControllerが...かによって異なりますが、これはあなたのために機能していないので、私の賭けはあなたの混乱がどこにあるかです)。

一般に、そのようなコントローラーをフェッチするためにアプリケーションデリゲートにアクセスすることでコードを複雑にする必要はありません。self.navigationControllerほとんどの場合、新しいコントローラーをプッシュするだけです。

于 2009-12-16T05:23:47.390 に答える