通行证变量为UIPopoverControllerView的iOS

问题描述:

我有从一个视图控制器传递变量到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

没有什么错在你的代码,除非你正在创建酥料饼之前设置酥料饼的代表。我改变了顺序。并检查您的字典是否为零

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

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

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