3

テーブルビューを使用しているアプリケーションがあります。セルのボタンを押すと、前のビューコントローラーで選択したものを表示する別のビューコントローラー(つまり、testviewcontroller)に移動する必要があります。次に、1つのボタンを押すと、残りの値を表示している別のビューコントローラーに移動します。そこで1つを選択した場合は、上記のプロセスを繰り返す必要があります。問題は、ここからもそのtestviewcontrollerにいくつかの値を運んでいることです。ビューコントローラーに戻った場合、どうすればよいですか。新しい値を運びます。現在、私はこのようにしています。

TestViewController *test  =[[ TestViewController alloc]initWithNibName:@"TestViewController" bundle:nil];


test.itemselected=head;

test.itemid=productid;
//NSLog(@"%@",del.navigationController);

[del.navigationController pushViewController:test animated:YES];

でも私は知ってる

NSArray *array = [del.navigationController viewControllers];

[array objectAtIndex:3]私の希望するビューコントローラです。

誰かが同じViewControllerのこのプッシュを再び回避する方法を知ることができますか?

4

3 に答える 3

20
for (UIViewController*vc in [self.navigationController viewControllers]) {
if ([vc isKindOfClass: [TestViewController class]]){
vc.itemselected= head ; 
[[self navigationController] popToViewController:vc animated:YES];
  }
}

*編集* これは

for (TestViewController*vc in [self.navigationController viewControllers])

それ以外の

for (UIViewController*vc in [self.navigationController viewControllers])
于 2012-08-15T08:31:36.957 に答える
0

あなたの状態では、ポップバックして新しいコンテンツでテーブルをリロードする方が良いです。新しいインスタンスにプッシュする必要はありません。

テーブルのデータソースに別の配列を使用する

選択したアイテムをデータソース配列から削除します

次に、ポップバックされたときに次のビューにプッシュしてコンテンツをリロードします

于 2012-08-15T08:26:21.373 に答える
0

ビューコントローラスタックでループをトラバースできます。

-(void) viewWillDisappear:(BOOL)animated {
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {

        NSMutableArray *ViewControllerArray=[[NSMutableArray alloc]init];
        for (long i=[self.navigationController.viewControllers count]-1;i>0; i--) {


            [ViewControllerArray addObject:[self.navigationController.viewControllers objectAtIndex:i]];

            NSLog(@"%@",ViewControllerArray);
            NSLog(@"%@",self.navigationController.viewControllers);
        }

        for (UIViewController *controller in self.navigationController.viewControllers) {

            //Do not forget to import AnOldViewController.h
            if ([controller isKindOfClass:[YourViewController class]]) {

                [self.navigationController popToViewController:controller
                                                      animated:YES];
                break;
            }
        }



    }
    [super viewWillDisappear:animated];
}
于 2016-07-31T07:35:33.060 に答える