[英]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.