簡體   English   中英

UILongPressGestureRecognizer如何將當前視圖更改為另一個視圖控制器?

[英]how can a UILongPressGestureRecognizer change the present view to another View Controller?

如何以編程方式從第一個視圖控制器更改為第二個視圖控制器,該第二個控制器在情節提要中鏈接到情節提要中的第一個?

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

標簽欄Cntrl =>導航Cntrlr ==(根視圖)==>視圖Cntrl A,UIButton ==(推)==>視圖Cntrl B

因此,在運行時,在顯示了View Controller A的情況下,按下其UIButton會使視圖更改為View ControllerB。

在視圖控制器A的UITableView單元上還有另一個UIButton。當我按住此按鈕時,UILongPressGestureRecognizer的委托會觸發,並且我現在需要視圖控制器B成為視圖。

然后如何從View Controller A更改為View Controller B? 在VC B打開的情況下,如何更改回VC A?

響應壓住的委托.........-(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 ...故事板ID為空白。 ..鏈接至:UINavigationController ... Class = UINavigationController StoryboardID =“ MANAGE_Storyboard_ID” ..鏈接至:UIViewController ... Class = acc StoryboardID為空白(初始視圖)..鏈接至:UIViewController ... Class&StoryboardID =“ SCHEDULE_UIViewController”(目標視圖)

輸出:..........

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

在長按手勢識別器的委托方法中,您可以從如下代碼中推送視圖控制器B:

ViewControllerB *viewControllerB = [self.storyboard instantiateViewControllerWithIdentifier:NSStringFromClass([ViewControllerB class])];
[self.navigationController pushViewController:viewControllerB animated:YES];

如果需要,可以使用其他標識符。 使用類名只是我的偏愛。

導航控制器將替您切換回視圖控制器A。 將在左上角為用戶顯示一個后退按鈕。

暫無
暫無

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

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