2013-04-11 21 views
0

我有從一個視圖控制器傳遞變量到UIPopoverViewcontroller通行證變量爲UIPopoverControllerView的iOS

在邏輯不一樣通過數據兩種常用viewControllers之間的問題?

即在視圖1中設置一個變量併合成然後呈現PopoverView將變量從視圖1傳遞給視圖2?

我真的很苦惱,我已經讀了一些關於協議,但似乎矯枉過正,如果它會像平常的視圖控制器工作?

一個例子

self.optionsPopover.delegate = self; 
    popOverViewController = [[PopOverViewController alloc]initWithNibName:@"PopOverViewController" bundle:nil]; 
    self.optionsPopover = [[UIPopoverController alloc]initWithContentViewController:popOverViewController]; 

    //dictionary to pass from view1 to view2 which is a popover 
    self.popOverViewController.statsDict = self.statsDict; 
    [self.optionsPopover setPopoverContentSize:CGSizeMake(320, 480)]; 
    [self.optionsPopover presentPopoverFromBarButtonItem:optionsButton permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 
+0

這是相同的,但你設置屬性之前,你提出它。你是否爲popover創建了一個自定義類來放置你的屬性? – 2013-04-11 12:36:38

回答

0

沒有什麼錯在你的代碼,除非你正在創建酥料餅之前設置酥料餅的代表。我改變了順序。並檢查您的字典是否爲零

self.popOverViewController = [[PopOverViewController alloc]initWithNibName:@"PopOverViewController" bundle:nil]; 

//dictionary to pass from view1 to view2 which is a popover 
//self.popOverViewController.statsDict = self.statsDict; 

self.popOverViewController.testString = @"testing"; // This is for testing only 

self.optionsPopover = [[UIPopoverController alloc]initWithContentViewController:popOverViewController]; 
self.optionsPopover.delegate = self; 

[self.optionsPopover setPopoverContentSize:CGSizeMake(320, 480)]; 
[self.optionsPopover presentPopoverFromBarButtonItem:optionsButton permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 
+0

感謝這是代表的命令!非常感謝 – 2013-04-11 13:07:45

+0

不,這是在設置定製屬性後調用'initWithContentViewController'的順序。查看我的答案以獲得正確的解決方案 – 2013-04-11 13:12:52

+0

你是對的,謝謝! – 2013-04-11 13:17:07

0

UIPopOverViewController將讓你展現自己的UIViewController(充當容器)。像收到UIViewControllerUINavigationController一樣。您在UIPopoverViewController中想要做什麼?

+0

我已經提供了一個從view1傳遞字典到view2的例子,這是popoverviews視圖控制器 – 2013-04-11 12:40:33

+0

爲什麼你用另一個啓動一個'UIPopOverController'? – Peres 2013-04-11 12:42:49

+0

對不起,不對? – 2013-04-11 12:46:51

0

initWithContentViewController後,您popOverViewControllerviewDidLoad方法已經被稱爲(和當時的statsDict屬性爲nil)。

因此,無論設置該屬性初始化被稱爲或寫像一個定製的setter前:

- (void)seStatsDict(NSDictionary *)statsDict 
{ 
    _statsDict = statsDict; 
    if (self.view) { 
     // Set UILabel texts, etc... 
    } 
} 
+0

對不起,它沒有區別 – 2013-04-11 12:48:17

+0

檢查我編輯的答案! – 2013-04-11 13:11:01