2011-12-08 17 views
0

私はあなたを助けてくれることを願っています。私はタブバーアプリであるアプリを設計しました。最初のタブのビューコントローラにはボタンがあり、ボタンを押すとモーダルビューが生成されます。モーダル・ビュー(ユーザー・データの入力に使用する)の「保存」ボタンを押すと、ユーザーが入力したすべてのデータの表が表示される別の表ビューを押すため、モーダル・ビューのnavコントローラを初期化しましたこれまでのところ)。スタックされたテーブルビューには、「完了」ボタンがあります。これを押すと、タブ上の別のビュー(ユーザー入力の進行状況ビュー)に移動する必要があります。つまり、スタックをオフにします。スタック内のビューコントローラからビューコントローラへの切り替えがありません

私の質問は、スタックに2つのコントローラがある場合、どのように私はスタック上にない別のビューにスタックをポップするのですか?私はpopToViewControllerメソッドを使用しましたが、あなたが推測したように、「存在しないビューコントローラにポップしようとしました」というメッセージが表示されます。

- (IBAction)doneButtonPressed:(id)sender 
{ 
    LogTableViewController *logTableViewController = [[LogTableViewController alloc]init]; 

    [self.navigationController popToViewController:logTableViewController animated:YES]; 

    [logTableViewController release]; 
} 

LogTableViewControllerがスタック上ではなく、アプリ内の別のタブのためのちょうど別のターゲットである:ここでは、スタック上の2番目のビューの私の簡単なコードです。何か案は?前もって感謝します。

答えて

0

あなたは近くにいました。ただ、やる:

- (IBAction)doneButtonPressed:(id)sender 
{ 
    LogTableViewController *logTableViewController = [[LogTableViewController alloc]init]; 

    [self.navigationController setViewControllers:[NSArray arrayWithObject:logTableViewController] animated:YES]; 

    [logTableViewController release]; 
} 
+0

他のすべてのビューコントローラがスタックから削除され、それ以外のビューコントローラが残っていない場合は解放される可能性があります。 すべてのビューコントローラを1つのビューのみを含む新しいテーブルに置き換える代わりに、テーブルに1つ追加してからナビゲーションを実行します。 –

+0

はい、そうです。彼を守るかどうかは、彼の責任です。彼が意図していたように働いていたら、彼は何をしようとしていたのでしょうか?それをスタックから突き放して、おそらく新しいものを押し込んだでしょう。もちろん、そのようには動作しませんが、 '-setViewControllers:animated:'は行います。 – gschandler

+0

ありがとう!それがそれでした。私はあなたの助けに感謝します。私が近くにいることを知ってうれしいですが、私は自分でそれを考え出すことはありませんでした。問題があるのは、その新しいビューに着くと、タブバーが一番下にないことです。 LogTableViewが表示されている元のタブバーにどのようにアクセスできるかについてのアイデアはありますか? – pina0004

1

私はあなただけのスタックに新しいビューコントローラをプッシュすることはできません理由は全くわからないんだけど、あなたがそれをポップする必要がある場合は、あなたが行うことができます:

//create new VC 
LogTableViewController *newVC = [[LogTableViewController alloc]init];; 

//get VC stack 
NSMutableArray * newControllers = [NSMutableArray arrayWithArray: self.navigationController.viewControllers]; 

//choose where to insert the new vc 
NSUInteger insert_index = [newControllers count] - 1; 

//insert into the stack 
[newControllers insertObject:newVC atIndex:insert_index]; 

//replace stacks 
[self.navigationController setViewControllers: newControllers]; 

//pop to your new controller 
[self.navigationController popViewControllerAnimated:YES]; 

これが役立つことを願っています。

関連する問題