繁体   English   中英

iPad和UIPickerView(或UIDatePickerView)

[英]iPad and UIPickerView (or UIDatePickerView)

有谁在3.2 SDK中使用UIPicker有运气吗? 我正在将iPhone应用程序移植到iPad上,这是我似乎无法开始工作的一件事。 我试过了...

- 创建一个操作表,将选择器添加为子视图并显示它。

- 创建上面的操作表,使其成为通用ViewController的视图,将该VC添加到UIPopover

- 只为选择器提供通用ViewController的视图,将该VC添加到UIPopover

使用操作表,它甚至不会尝试绘制它。 在弹出窗口视图中,它尝试绘制但不能正确呈现。

只是想检查一下是否有人完成了这项工作,如果有的话。

感谢大家!

我只是苦苦挣扎了大约24小时,并通过遵循本教程并在他提到他的UITableView的任何地方让它工作,只需考虑你的UIPickerView并替换相应的信息。

Matthew Casey - 教程:iPad上的Pop Over Control简介

简而言之,在iPad上,您可以显示选择器的唯一方法是在弹出控件中。 在popover的内容视图控制器(选择器视图的视图控制器)和主应用程序的视图控制器之间共享数据是我无法弄清楚的。 (即获取选择器的“didSelectRow”方法以影响主视图控制器中的对象,例如UITextField或UIButton。)这是通过创建自定义协议来将“didSelectRow”方法转发到主视图控制器来处理的。

我不是这方面的专家,所以我一步一步地完成了这个教程,最后DID工作了。 在我找到教程之前,我迷路了。 (我也将iPhone应用移植到iPad上。)

当您想在视图控制器之间共享数据时...解决方案是NSNotificationCenter。

我知道这并不能完全回答这个问题,但如果我想在视图控制器之间共享数据:在发送视图控制器中

NSMutableDictionary *toshare = [[NSMutabledictionary alloc] init];
[toshare setValue:valueToShare forKey:@"shared"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"imSharing" withObject:nil userInfo:(NSDictionary *)toshare];

在接收视图控制器中:放在viewDidLoad中

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(imSharing:) name:@"imSharing" object:nil];

然后添加此功能:

-(void)imSharing:(NSNotification *)notification {
      NSDictionary *dictionary = [notification userInfo]; 
        //do something with [dictionary objectForKey:@"shared"];
        dictionary = nil;
}

这适用于在2个视图控制器之间共享数据......好吧,无论如何都是少量数据。

否则请在此处查看有关在视图控制器之间共享数据的

我是上面提到的教程的作者。 要使选择器在弹出窗口中工作并将所选值添加到主视图中的文本框,您需要使用协议。 我创建了一个示例项目来展示这一点。 我将很快创建一个关于这个的教程。

示例项目

你在使用Interface Builder吗? 使用nib文件在Xcode中创建一个新的UIViewController子类要容易得多,然后在UIPicker中拖动。 然后,您需要在弹出框中显示视图控制器。 操作表未设计为具有子视图,因此不要这样做。

我已经做到了:请参阅C64 Paint中的第三个屏幕截图。

感谢大家的回复。 因此,虽然我不能说出最初的问题是什么,但我从头开始解决这个问题并让它发挥作用。 我制作了全新的View Controllers并在Popover中显示它们并且效果很好。 似乎是制作通用应用程序的难点之一。

如果您在iPad上创建UIPickerView,它将起作用,如下所示:

UIPickerView* pickerView = [[UIPickerView alloc]initWithFrame: CGRectMake (someX, someY, 320, 216)];

其他一些尺寸确实有效。 但是CGRectZero无法在iPad上运行 - 尽管它在iPhone中可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM