Search code examples
objective-cuipopovercontroller

sending value of NSString to ViewController PopOver


Im looking to access the value of an NSString from the parent ViewController inside the PopOver View Controller. Below is the code i have that generates the popover when selecting a row from a tableView. I need to be able to access the varToPass value in the editPersonViewController.

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    UIView *anchorr = tableView;
    UIViewController *viewControllerForPopover =
    [self.storyboard instantiateViewControllerWithIdentifier:@"editPersonViewController"];

    popover = [[UIPopoverController alloc]
               initWithContentViewController:viewControllerForPopover];
    [popover presentPopoverFromRect:anchorr.frame
                             inView:anchorr.superview
           permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];


    Person *person = [arrayOfPersons objectAtIndex:indexPath.row];


    // I Need to Send/Access This Value In editPersonViewController
    NSString *varToPass = person.personID;


}

Solution

  • Add a public property in your editPersonViewController.h file called personID like so

    @property (nonatomic, strong) NSString *personID;
    

    Then, just reorder your instantiation of the editViewController to look like this:

    UIView *anchorr = tableView;
    Person *person = [arrayOfPersons objectAtIndex:indexPath.row];
    EditPersonViewController *viewControllerForPopover =
    (EditPersonViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"editPersonViewController"];
    
    viewControllerForPopover.personID= person.personID;
    
    popover = [[UIPopoverController alloc]
               initWithContentViewController:viewControllerForPopover];
    [popover presentPopoverFromRect:anchorr.frame
                             inView:anchorr.superview
           permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];