2010-04-29 38 views
2

有沒有人在3.2 SDK中使用UIPicker有什麼好運氣?我正在將iPhone應用程序移植到iPad中,這是我似乎無法工作的一件事。我試過...iPad和UIPickerView(或UIDatePickerView)

- 創建一個操作表,將選擇器添加爲子視圖並顯示它。

-Creating上述動作片,使之成爲一個通用的ViewController的視圖,並表示VC到UIPopover

-Making只是拾取器的通用的ViewController的視圖,並表示VC到UIPopover

通過操作手冊,它甚至不會嘗試繪製它。在彈出視圖中,它試圖繪製,但不能正確渲染。

只是想檢查是否有人已經完成了這一點,如果是的話如何。

謝謝大家!

回答

2

我是上述教程的作者。要讓選取器在彈出窗口中工作並將所選值添加到主視圖中的文本框中,您需要使用協議。我已經創建了一個示例項目來展示這一點。我將很快創建一個教程。

Sample Project

+0

我看到您附加的項目包含「構建」文件夾,儘管不必要地增加了zip文件的文件大小,但它對文件貢獻顯着。請儘可能刪除構建文件夾並重新上傳。通過刪除生成文件夾,壓縮文件的大小從4.2 MB減少到1.9 MB。 – 2011-04-11 08:59:08

1

您使用Interface Builder嗎?使用nib文件在Xcode中創建一個新的UIViewController子類更容易,然後拖入UIPicker。然後你需要在彈出窗口中顯示視圖控制器。行動表不是設計爲具有子視圖,所以不要這樣做。

我已經做到了:請參閱C64 Paint中的第三個截圖。

3

我剛剛爲此奮鬥了大約24小時,並按照本教程和他提到的他的UITableView,只要想一想你的UIPickerView並替換相應的信息就可以工作。

Matthew Casey - Tutorial: Introduction to Pop Over Control on iPad

總之,在iPad上,你可以顯示一個選擇器的唯一方法是酥料餅的控件中。在popover的內容視圖控制器(選取器視圖的視圖控制器)和主應用程序的視圖控制器之間共享數據是我無法弄清楚的。 (即讓picker的「didSelectRow」方法影響主視圖控制器中的對象,比如UITextField或UIButton)。這是通過創建自定義協議來將「didSelectRow」方法轉發給主視圖控制器來處理的。

我絕不是這方面的專家,所以我一步一步跟着那個教程,最後DID工作。在我發現教程之前,我迷了路。 (我也正在將iPhone應用移植到iPad上。)

+2

該鏈接已經失效。 – aerique 2011-12-22 12:33:20

1

感謝大家的回覆。所以,雖然我不能說最初的問題是什麼,但我從頭開始了這個問題,並使其工作。我製作了全新的視圖控制器,並將它們顯示在Popover中,並且運行良好。似乎是製作通用應用程序的難點之一。

0

,如果你像這樣創建它的UIPickerView會,如果你在iPad上創建工作:

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

一些其他尺寸看起來確實工作。但CGRectZero不能在iPad上工作 - 即使它在iPhone中也能正常工作。

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個視圖控制器之間共享數據...無論如何,少量的數據。

否則在這裏尋找更多關於sharing data between view controllers