0

我在将变量从视图控制器传递到 UIPopoverViewcontroller 时遇到问题

逻辑与在两个常用视图控制器之间传递数据不同吗?

即在view1 & view2 中设置一个变量并合成然后呈现PopoverView 将变量从view1 传递到view2?

我真的在为此苦苦挣扎,我已经阅读了一些关于协议的内容,但如果它像通常的视图控制器一样工作,似乎有点过头了?

一个例子

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

3 回答 3

0

UIPopOverViewController将允许您展示自己的UIViewController(充当容器)。就像UINavigationController接收到的 a一样UIViewController。你到底想做什么UIPopoverViewController

于 2013-04-11T12:35:50.133 回答
0

之后initWithContentViewController,你popOverViewControllerviewDidLoad方法已经被调用了(那个时候statsDict属性是nil)。

因此,要么在调用初始化程序之前设置属性,要么编写自定义设置器,如:

- (void)seStatsDict(NSDictionary *)statsDict
{
    _statsDict = statsDict;
    if (self.view) {
        // Set UILabel texts, etc...
    }
}
于 2013-04-11T12:45:12.987 回答
0

除了在创建弹出框之前设置 popOver 的委托之外,您的代码没有任何问题。我已经改变了顺序。并检查您的字典是否为零

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]; 
于 2013-04-11T12:59:47.167 回答