簡體   English   中英

iOS,應該如何備份導航堆棧而不是root?

[英]iOS, how should go back up the navigation stack but not to root?

我正在使用一個Storyboard和Storyboard ID,我是導航堆棧深處的幾個控制器。

  • 菜單控制器
  • 選擇控制器
  • 項目控制器
  • 結果控制器

我目前在“結果控制器”上,我想轉到“項目控制器”,但是重置/重新加載該控制器,我將傳遞當前具有的相同屬性值。 因此,實際上我將上升兩個級別然后進行推送。

我只是想知道實現此目標的最佳方法是什么?

我猜我可以多次調用pop,然后在“結果控制器”中推送屬性值,將其傳遞給“項目控制器”?

嗯,我想我會在第一次彈出時保留動畫,然后在兩次按下時將其禁用。

希望這是有道理的。

嘗試這個。 也許會對您有幫助。

NSArray *vList = [[self navigationController] viewControllers];
    UIViewController *view;
    for (int i=[vList count]-1; i>=0; --i) {
        view = [vList objectAtIndex:i];
        if ([view.nibName isEqualToString: @"ItemController"])
        {
            [self.navigationController popToViewController:view animated:YES];
            break;
        }
    }

嘗試這個

[self.navigationController popToViewController:[[self.navigationController viewControllers] objectAtIndex:2] animated:YES];

您可以返回任何想要的索引

 for (UIViewController *controller in [self.navigationController viewControllers])
        {
            if ([controller isKindOfClass:[YourViewCOntrollerName class]])
            {
                [self.navigationController popToViewController:controller animated:YES];

                break;
            }
        }

彈出特定的視圖控制器(在本例中為ItemController),您可以使用以下代碼

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

您嘗試制作的方法並不是真正的最佳選擇,最終可能會給您帶來麻煩。 干凈的方法是編碼一種重置“項目控制器”的方法,因此您只需要彈出1次即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM