2

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

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

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

- 使选择器成为通用 ViewController 的视图,将该 VC 添加到 UIPopover

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

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

谢谢大家!

4

6 回答 6

3

我只是为此苦苦挣扎了大约 24 小时,并通过遵循本教程让它工作,无论他提到他的 UITableView,只要想想你的 UIPickerView 并替换适当的信息。

Matthew Casey - 教程:iPad 上的弹出式控制简介

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

我绝不是这方面的专家,所以我一步一步地学习了那个教程,最终它确实奏效了。在我找到那个教程之前,我迷路了。(我还将 iPhone 应用程序移植到 iPad 上。)

于 2010-05-04T05:42:46.523 回答
2

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

示例项目

于 2010-05-13T20:24:21.620 回答
2

当您想在视图控制器之间共享数据时……解决方案是 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 个视图控制器之间共享数据......好吧,无论如何都是少量数据。

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

于 2012-08-15T19:02:43.917 回答
1

你在使用界面生成器吗?使用 nib 文件在 Xcode 中创建一个新的 UIViewController 子类要容易得多,然后将 UIPicker 拖入。然后您需要在弹出窗口中显示视图控制器。操作表没有设计为具有子视图,所以不要这样做。

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

于 2010-04-29T20:39:55.070 回答
1

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

于 2010-05-04T14:33:16.027 回答
0

如果您像这样在 iPad 上创建 UIPickerView ,它将起作用:

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

其他一些尺寸似乎确实有效。但是 CGRectZero 不能在 iPad 上工作——即使它在 iPhone 上也能工作。

于 2011-07-25T03:10:45.303 回答