簡體   English   中英

UINavigationController pushViewController不起作用

[英]UINavigationController pushViewController does not work

我已經審查了所有其他類似的問題,但是找不到解決方案。

我的iPad故事板上有一個標簽欄控制器,作為“初始視圖控制器”,它通過“關系Seque視圖控制器”鏈接到導航控制器,后者通過“根視圖”鏈接鏈接到具有UIButton的視圖控制器A。 ,它通過“手動順序推送”鏈接到View ControllerB。

Tab Bar Cntrl => Navigation Cntrlr ==(root view)==> View Cntrl A, UIButton ==(push)==> View Cntrl B

因此,在運行時,在顯示了View Controller A的情況下,按下其UIButton需要更改為View ControllerB。但是什么也沒有發生。

響應UIBUTTON(按下並保持手勢)的代表.........

 - (void)schedule_long_press_delegate:(UILongPressGestureRecognizer *)recognizer { if (recognizer.state == UIGestureRecognizerStateEnded) { printf("Long press Ended ................. \n");
    // Get storyboard:
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad"
                                                             bundle: nil];
    printf("mainStoryboard = %x \n", (int)mainStoryboard ); // !!! ax

    // Get nav controller for MANAGE view:
    UINavigationController *MANAGE_UINavigationController = (UINavigationController*)[mainStoryboard 
                        instantiateViewControllerWithIdentifier: @"MANAGE_Storyboard_ID"];
    printf("MANAGE_UINavigationController = %x  \n", (int)MANAGE_UINavigationController ); // !!! ax


    // Get MANAGE view's view controller:
    SCHEDULE_UIViewController *schedule_UIViewController = [self.storyboard instantiateViewControllerWithIdentifier:
                                        NSStringFromClass([SCHEDULE_UIViewController class])];
    printf("schedule_UIViewController = %x  \n", (int)schedule_UIViewController ); // !!! ax

    // Change screen to MANAGE view:
    [MANAGE_UINavigationController  pushViewController: schedule_UIViewController animated:YES];
}
else {
    printf("Long press detected .....................   \n");
}        

}

故事板設置:

UITabBarController ... Storyboard ID is blank. ..links to: UINavigationController ... Class=UINavigationController StoryboardID = "MANAGE_Storyboard_ID" ..links to: UIViewController ... Class=acc StoryboardID is blank (INITIAL VIEW) ..links to: UIViewController ... Class & StoryboardID = "SCHEDULE_UIViewController" (TARGET VIEW)

OUTPUT:..........

委托激發時,它將顯示所有已設置的指針:

mainStoryboard = 1f8b4900
 MANAGE_UINavigationController = 1e5d45f0
 schedule_UIViewController 2 = 1e5d4b20 

我缺少一些初始化嗎?

“實例化”一詞告訴您正在創建一個實例。 因此,當您致電:

UINavigationController *MANAGE_UINavigationController = (UINavigationController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"MANAGE_Storyboard_ID"];

您正在創建一個新的導航控制器,它不是當前可見層次結構中的一部分。

盡管您的對象和調用可能很好,但是您沒有與管理屏幕的控制器進行交互。

(注意:如果您使用的代碼風格符合Apple標准,那么其他人可以更輕松地分析您編寫的內容。)

暫無
暫無

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

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