Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7079235
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 28, 20262026-05-28T06:38:48+00:00 2026-05-28T06:38:48+00:00

I have a universal app, where I am sharing the same controller for a

  • 0

I have a universal app, where I am sharing the same controller for a IPad and IPhone storyboard.
I have put a UILongPressGestureRecognizer on a UITableView, that when a cell is pressed on iPhone it calls an action that perform a segue:

-(IBAction)showDetail:(id)sender {
    UILongPressGestureRecognizer *gesture = (UILongPressGestureRecognizer*)sender;
    if (gesture.state == UIGestureRecognizerStateBegan) {
        CGPoint p = [gesture locationInView:self.theTableView];

        NSIndexPath *indexPath = [self.theTableView indexPathForRowAtPoint:p];
        if (indexPath != nil) {
            [self performSegueWithIdentifier:SEGUE_DETAIL sender:indexPath];
        }
    }
}

the segue is a detail view performed as a ‘push’. The first thing you should notice is that the sender is an NSIndexPath, is the only way I found for passing the selected cell. Maybe there’s a better solution.
Everything works fine, in a sense that the segue is performed, and before the prepareForSegue is called too.

However it happens that on iPad, I have changed the segue identifier to Popover.
Now things are working in part, the segue is performed, but prepareForSegue is not called and therefore the destination view controller is not set up as it should be.

What am I doing wrong ?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-28T06:38:49+00:00Added an answer on May 28, 2026 at 6:38 am

    What I have discovered so far, is that with any segue identifier that is not popover these are the invocations made by iOS:

    • prepareForSegue (on source controller)
    • viewDidLoad (on destination controller)

    while in popover segue the invocation order is:

    • viewDidLoad (on destination controller)
    • prepareForSegue (on source controller)

    just because I put all my logic in viewDidLoad, the controller was not properly initialized, and a crash happened. So this is not exactly true that prepareForSegue is not called, the truth is that I was getting an exception, and I wrongly mistaken as prepareForSegue not getting called.

    I couldn’t put everything in viewWillAppear because a call to CoreData had to be made and I didn’t want to check if entities were ok each time the view display.

    How did I solve this ? I created another method in destination controller

    -(void)prepareViewController {
      // initialization logic...
    }
    

    and changing the prepareForSegue method in source controller itself:

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
      MyViewController *mvc = (MyViewController*)[segue destinationViewController];
      // passing variable 
      // with segue style other than popover this called first than viewDidLoad
      mvc.myProp1=@"prop1"; 
      mvc.myProp2=@"prop2";
    
      // viewWillAppear is not yet called
      // so by sending message to controller
      // the view is initialized
      [mvc prepareViewController];
    
    }
    

    don’t know if this is expected behavior with popover, anyway now things are working.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have written a universal iOS-App that runs fine on my iPhone and iPad,
Im converting an Iphone app to a universal App, I have created an Ipad
I am updating an iPhone app to an universal. I have different views controller
I have a universal app built that runs and works perfectly on an iPad,
If I have a universal app (runs on both iPhone & iPad), how do
I have a universal iPhone/iPad app. On the main menu I have a UIImage
I have a Universal app (iPhone/iPad) which has an iAd displayed at the bottom
I have a Universal app (iPhone/iPad) which is very basic. There is a List
I have a Universal app (iPhone/iPad) testing on IOS4.3. It has an iAd which
I have a universal app for ipad and iphone. What I'm trying to determine

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.