iphone - 在通用应用程序中使用 UIPopoverController

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

我有一个按钮,当按下它时会显示一个 View Controller ,这是一个通用应用程序。

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

我知道弹出框应该负责关闭它,所以我保留了对 UIPopover 的引用,这样我就可以从负责按钮的 View Controller 中关闭它(从创建弹出框的同一 View Controller ) .

但我不确定谁应该负责从导航堆栈中弹出新的 View Controller ,应该是允许用户选择项目的 View Controller ,还是具有按钮的 View Controller ?

我应该怎么做:

//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...
}

最佳答案

负责人总是将 View Controller 推送到导航堆栈的人,因此您的第一个选择。 这样做的原因是,你永远不知道你是如何显示你的选择器 View Controller 的,这次你将它压入堆栈,下次你呈现它时模态,在这种情况下将它弹出到选择器中将不起作用。

关于iphone - 在通用应用程序中使用 UIPopoverController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10765973/

相关文章:

iPhone 网络应用程序图标

iphone - 如何在 iPhone 中将图像从相机/UIImagePickerController 动态添加到 iCarousel

iphone - 代码错误 : No visible @interface for masterViewController declares the selector

iphone - 检测 UITableView SECTION 上的触摸?

android - Cordova 启动画面插件

ios - 从指针访问另一个类列 - Parse

iphone - 在 ScrollView 中创建动态 UIButton 的正确方法?

iphone - 如何构造和使用变量名称?

objective-c - UIViewController - iPad Pro 3rd 顶部和底部出现神秘空白

c++ - 创建跨平台 C++ 触摸管理器。在c++中传递Objective-c对象涉及代码