2011-05-17 11 views
2

我目前有代碼來打開一個UIViewController,在這種情況下你已經打開它,所以它不會從頭開始完全加載。因此,當您返回時,舊數據仍將保留在那裏。我不想在下一次進入應用時保存數據。只有在那屆會議上。我正在嘗試將這些代碼改編成適用於UIPopOver的iPad。我已經嘗試過,但無法做到。打開一個UIPopoverController的代碼

//而不酥料餅

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

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

//酥料餅

- (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]; 





} 

回答

1

您可以將dateViewPopOverController作爲一個實例變量保存在您展示彈出窗口的視圖控制器中。這樣,當popover被解散時,你的視圖控制器仍然保持顯示的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... 

} 
+0

由於某種原因第二次崩潰。 – BDGapps 2011-05-18 11:58:32

+0

你能發佈異常嗎? - 我編輯了我的答案,注意你不應該**在你的selectStartDate方法中釋放dateViewPopOverController,現在它是一個實例變量 – rdavisau 2011-05-18 12:05:00

+0

非常感謝它的工作 – BDGapps 2011-05-18 12:11:52

1

它看起來像你只需要一個實例變量來保存你的dateViewPopOverViewController_iPad實例。然後使用與非彈出代碼中的DateViewController相同的「如果它爲零,創建實例」邏輯。

+0

你說的一個實例變量來保存你的dateViewPopOverViewController_iPad實例是什麼意思? – BDGapps 2011-05-17 00:18:17

+0

你可以給我代碼嗎,因爲我不明白你的意思。更不用說如何實現這一點。謝謝 – BDGapps 2011-05-17 21:19:25