簡體   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