2010-12-13 1 views
0

とSplitViewControllerがあることである:開始時のiPad:私はアップルのサンプルコード「MultipleDetailViews」が、私は何をしたい、次のよナビゲーション

  1. は、RootViewController(テーブルビュー)デフォルトdetailViewControllerを表示を示している(第一detailView )
  2. ユーザーが表のセルを選択したときにスタックにプッシュすると、splitViewのマスターにSubCategoriesVC(表ビュー)が表示されますが、detailViewは更新されません。その後.. detailViewControllerを更新(第二detailView)

ので、RootViewController.mで、私は別のナビゲーション を押して表のセルを選択するSubCategoriesVCで

  • 、...

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
        SubCatVC *browseSubCatView = [[SubCatVC alloc] initWithNibName:@"SubCatVC" bundle:nil]; 
        [self.navigationController pushViewController:browseSubCatView animated:YES]; 
        [browseSubCatView release]; 
    } 
    

    、中SubCatVC.m

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    UIViewController <SubstitutableDetailViewController> *detailViewController = nil;  
    SecondDetailViewController *newDetailViewController = [[SecondDetailViewController alloc] initWithNibName:@"SecondDetailViewController" bundle:nil]; 
        detailViewController = newDetailViewController; 
    
    // Update the split view controller's view controllers array. 
    NSArray *viewControllers = [[NSArray alloc] initWithObjects:self.navigationController, detailViewController, nil]; 
    self.splitViewController.viewControllers = viewControllers; 
    [viewControllers release]; 
    
    // Dismiss the popover if it's present. 
    if (self.popoverController != nil) { 
        [self.popoverController dismissPopoverAnimated:YES]; 
    } 
    
    // Configure the new view controller's popover button (after the view has been displayed and its toolbar/navigation bar has been created). 
    if (self.rootPopoverButtonItem != nil) { 
        [detailViewController showRootPopoverButtonItem:self.rootPopoverButtonItem]; 
    } 
    
        [detailViewController release]; 
        [[NSNotificationCenter defaultCenter] postNotificationName:@"updateProduct" object:nil]; 
    } 
    

    が、それは...私のdetailViewを更新していなかったので、私は間違っているのか分からないのですか? Srcここに:http://pastebin.com/iy6SqLqt

    誰かが私に助言してくれることを願っています。ありがとう

  • 答えて

    0

    私はあなたのソースを見ていないが、スプリットビューの共通の問題は代理人です。

    navスタック上の新しいrootControllerをプッシュするときは、それが話したいdetailViewControllerへのポインタを持っていることを確認する必要があります。 、あなたはそのnilを見つけた場合、

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    
    //do stuff, init alloc vc's.... 
    
    NSLog(@"DELEGATE: %@",self.delegate); 
    
    //push/delegate etc.. 
    
    } 
    

    オリジナルのルーツデリゲートをコピー:あなたのSubCatVC(またはそのことについては任意のルート)で

    を:あなたはそれを更新しようとする前にhtis私は、デリゲートをロギング確認することができますあなたの新しいディテールを入れたら、それとコミュニケートしたいルートを通知/設定してください。

    詳細が必要な場合は、尋ねてください。

    +0

    ルーク、応答に感謝します。 SubCatVCをSubCatVC:UITableViewController に変更しましたので、デリゲートが正常に動作しています。私が持っている他の問題は、SubCatVCのセルを選択するときです。ポップオーバーコントローラはnullです..どのように私はそれを渡すことができますか?あなたがコード/チュートリアルを持っていれば共有できるはずです。tnx –

    +0

    一般的には、objective-cではどこにでもポインタを渡すことができます。あなたのViewC(PopCを持たない)にプロパティを作り、それをinitした後に設定してください。この場合は、オブジェクトのポインタが親オブジェクトの前に死んでしまうことがありますか? –

    +0

    ルーク、私はポインタを渡す方法を知っています。私はなぜpopoverとpopover barbuttonItemがNullであるのか不思議です。私はここにコードを投稿(添付)しています(MultiDetailSplitFSG.zip):http://www.iphonedevsdk.com/forum/iphone-sdk-development/66673-splitview-help.html ...あなたがpls&私に何か間違っているとアドバイスしてください。私は本当にこれにこだわっています。 –

    関連する問題