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 pressed, it needs to go to the home page, which is ViewController.
However, it doesn't look as if [self presentViewController:vc animated:NO completion:NULL];
works for UIView.
How do I work around this problem ?
- (void) createTitlebar {
CGRect titleBarFrame = CGRectMake(0, 0, 320, 55);
//Create the home button on the top right of the page. When clicked, it will navigate to the home page of the application
homeButton = [UIButton buttonWithType:UIButtonTypeCustom];
homeButton.frame = CGRectMake(275, 10, 40, 40);
[homeButton setTag:1];
[homeButton setImage:[UIImage imageNamed:@"homeIcon.png"] forState:UIControlStateNormal];
[homeButton addTarget:self action:@selector(homeButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:homeButton];
}
- (IBAction)homeButtonPressed:(id)sender{
//Transition to the submit button page
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentViewController:vc animated:NO completion:NULL];
}
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
then, inside ParentView call method of that delegate
and then, inside your VC implement
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)
You can try below code
Here's a more idiomatic Swift 3 version of Shamsudheen's answer:
Then you can just call:
You can do this without using the delegate pattern. Here you go
ObjectiveC
Swift
With Swift 4 - 4.2 Adding onto Shamsudheen TK's answer.
With UINavigationController: Here is also an additional feature -> You can pass along a UINavigationController with your customViewController.