iPhone: Show modal UITableViewController with Navigation bar

前端 未结 6 1036
温柔的废话
温柔的废话 2021-01-30 00:10

I am showing a modal view which is a UITableViewController class. For some reason it won\'t show the navigation bar when I show it. Here is my code:



        
6条回答
  •  闹比i
    闹比i (楼主)
    2021-01-30 00:46

    I want to share how the accepted solution can be used in projects with storyboards:

    The simple approach is to put in a storyboard blank navigation controller before the VC which is to be presented modally, so the relations look like:

    (Presenter VC) -> presents modally -> (navigation controller having a controller to be presented as its root).

    We've tried this approach for a while and noticed that our storyboards become "polluted" by a large number of such intermediate navigation controllers when each! of them is used exclusively for one! presentation of some other controller, that we want to be presented modally with navigation bar.

    Our current solution is to encapsulate the code from accepted answer to a custom segue:

    #import "ModalPresentationWithNavigationBarSegue.h"
    
    @implementation ModalPresentationWithNavigationBarSegue
    
    - (void)perform {
        UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self.destinationViewController];
    
        [self.sourceViewController presentViewController:navigationController animated:YES completion:nil];
    }
    @end
    

    Having this segue in our project we do not create intermediate navigation controllers in our storyboards anymore, we just use this ModalPresentationWithNavigationBarSegue like:

    Presenter VC --> Presentee VC

    I hope that this answer will be helpful to people who like to avoid unnecessary duplication in their apps storyboards.

提交回复
热议问题