Код для открытия UIPopoverController - PullRequest
2 голосов
/ 17 мая 2011

В настоящее время у меня есть код для открытия UIViewController, в этом случае вы открывали его раньше, чтобы он не загружался полностью с нуля.Таким образом, старые данные все еще будут там, когда вы вернетесь.Я не пытаюсь сохранить данные при следующем входе в приложение.Только на этой сессии.Я пытаюсь адаптировать этот код для iPad для UIPopOver.Я пытался, но не могу сделать это.

// без popover

  - (IBAction) addPerson:(id) sender{
if (addPersonController == nil) {
    addPersonController = [[addPersonViewController alloc] initWithNibName:@"addPersonViewController" bundle:nil];
}

addPersonController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:addPersonController animated:YES];
[addPersonController retain];
 }

// popover

  - (IBAction) addPerson:(id) sender{
// create your view controller if it doesn't exist yet
if (dateViewPopOverController == nil){
    addPersonViewController1 = [[addPersonViewControllerPopover_iPad alloc] init];
}
 pop = [[UIPopoverController alloc] initWithContentViewController:addPersonViewController1];

// rest of your method...
addPersonViewController1.delegate = self;

pop.popoverContentSize = CGSizeMake(320, 480);

CGRect rect = CGRectMake(790, 35, 175, 300);


[pop presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];





 }

Ответы [ 2 ]

1 голос
/ 18 мая 2011

Вы можете сохранить dateViewPopOverController в качестве переменной экземпляра в контроллере представления, из которого вы представляете всплывающее окно.Таким образом, когда всплывающее окно отклоняется, ваш контроллер представления все еще удерживает отображаемый элемент dateViewPopOverController.

в вашем файле .h:

@interface YourViewControllerName : UIViewController {

    dateViewPopOverViewController_iPad *dateViewPopOverViewController;
    // other ivars...

}

@property (nonatomic, retain) dateViewPopOverViewController_iPad *dateViewPopOverViewController;
// other @properties...

в вашем файле .m:

синтез:

@synthesize dateViewPopoverController;

ваш метод:

- (IBAction) selectStartDate:(id) sender {
    NSLog(@"Select start date");

    // create your view controller if it doesn't exist yet
    if (dateViewPopOverController == nil)
        dateViewPopOverViewController =  
            [[dateViewPopOverViewController_iPad alloc] init];

    popover2 = [[UIPopoverController alloc] 
        initWithContentViewController:dateViewPopOverViewController];

    // rest of your method... *but do not release the dateViewPopOverViewController here*

}

освободить контроллер в dealloc:

- (void) dealloc {

    [dateViewPopOverViewController release];
    // rest of dealloc...

}
1 голос
/ 17 мая 2011

Похоже, вам нужна переменная экземпляра для хранения экземпляра dateViewPopOverViewController_iPad.Затем используйте ту же логику «если это ноль, создайте экземпляр», которую вы использовали для DateViewController в не всплывающем коде.

...