【问题标题】:Using a UIPopoverController in Universal App在通用应用程序中使用 UIPopoverController
【发布时间】:2012-05-26 11:53:35
【问题描述】:

我有一个按钮,当按下时会显示一个视图控制器,这是在一个通用应用程序中。

在 iPhone 上,视图控制器被推送到导航堆栈上。在 iPad 上,它显示在弹出窗口中。新的视图控制器有一个委托,它是负责按钮的视图控制器,当用户选择了一个项目时,新的视图控制器向委托发送一条消息,将用户选择的内容传递给它。

我知道弹出框应该负责解除它,所以我保留对 UIPopover 的引用,以便我可以从负责按钮的视图控制器中解除它(从创建弹出框的同一视图控制器) .

但我不确定谁应该负责将新的视图控制器从导航堆栈中弹出,应该是允许用户选择项目的视图控制器,还是有按钮的视图控制器?

我应该这样做:

//Picker view controller
//....
[self.delegate finishedPickingItem:item];
//...

//The first view controller (the self.delegate in the above line):
-(void)finishedPickingItem:(NSString *)item {
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        [self.profilePopover dismissPopoverAnimated:YES];
    } else {
        [self.navigationController popToViewController:self animated:YES]; //Or should this be just popViewController:?
    }
    // do something with item...
}

或者:

//Picker view controller
//...
[self.delegate finishedPickingItem:item];
[self.navigationController popViewControllerAnimated:YES];
//...

//The first view controller (the self.delegate in the above line):
-(void)finishedPickingItem:(NSString *)item {
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        [self.profilePopover dismissPopoverAnimated:YES];
    }
    // do something with item...
}

【问题讨论】:

    标签: iphone objective-c ios ipad ios-universal-app


    【解决方案1】:

    负责的总是将视图控制器推送到导航堆栈上的那个,所以你的第一个选择。 这样做的原因是,你永远不知道你是如何显示你的选择器视图控制器的,这一次你把它推到堆栈上,下一次你展示它是模态的,在这种情况下,把它弹出到选择器中是行不通的。

    【讨论】:

      猜你喜欢
      • 2011-04-28
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-01
      相关资源
      最近更新 更多