Using presentViewController from UIView

后端 未结 5 475
鱼传尺愫
鱼传尺愫 2020-12-13 14:52

I am creating a title bar for my iOS application and I am making this inside a UIView. The only issue I am having is with the \"home button\". When the home button is presse

5条回答
  •  无人及你
    2020-12-13 15:36

    Only UIViewController can present another view controller, so if you need to show a viewcontroller from view there are several way, one of them is like this:

    make a viewcontroller on which your parent view is situated a delegate of it

    ParentView *view = [ParentView new];
    ...
    view.delegate = self;
    

    then, inside ParentView call method of that delegate

    - (IBAction)homeButtonPressed:(id)sender {
        [self.delegate buttonPressed];
    }
    

    and then, inside your VC implement

     -(void)buttonPressed {
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        ViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
        [vc setModalPresentationStyle:UIModalPresentationFullScreen];
        [self presentViewController:vc animated:NO completion:NULL];
    }
    

    If you need to keep this code inside UIView and avoid delegation you can do a trick like this (personally i don't like it but it should work)

    -(void)buttonPressed{
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        ViewController *vc = [storyboard      instantiateViewControllerWithIdentifier:@"ViewController"];
        [vc setModalPresentationStyle:UIModalPresentationFullScreen];
        [(UIViewController*)self.nextResonder presentViewController:vc animated:NO completion:NULL];
    }
    

提交回复
热议问题