在
http://developer.apple.com/library/ios/#samplecode/DateCell/Introduction/Intro.html
伊娃「pickerView」聲明中MyTableViewController.h這樣蘋果的示例代碼「DateCell」 :
@interface MyTableViewController : UITableViewController
{
@private
UIDatePicker *pickerView;
UIBarButtonItem *doneButton; // this button appears only when the date picker is open
NSArray *dataArray;
NSDateFormatter *dateFormatter;
}
@property (nonatomic, retain) IBOutlet UIDatePicker *pickerView;
...
它是在類文件MyTableViewController.m合成這樣的:
@implementation MyTableViewController
@synthesize pickerView, doneButton, dataArray, dateFormatter;
...
當這個應用程序運行時,我可以將NSLog(@"%@",pickerView)
插入到ViewDidLoad中,並且看到這個,果然,ivar pickerView是真實的並且有一個值。然而,無處不在,這個類alloc/init pickerView。這就是問題的根源:如果沒有明確地完成,它會如何完成?我很天真地將這些東西拷貝到我的RootViewController.h和.m文件中,我可以做同樣的事情,但是pickerView固執地保持未初始化(並且我的NSLog調用返回「(nil)」作爲它的值)不管我嘗試什麼,都沒有明確地分配/啓動它。當然RootViewController正在被實例化,或RootView不會出現,對吧?那麼,我的pickerView不應該像蘋果一樣繼續前進嗎?
所以...我必須手動分配/ init pickerView實例變量?如果是這樣,Apple在哪裏做?或者他們如何以其他方式做它?
我想我在這裏錯過了一些非常基本的東西,但我不知道它是什麼。我看不到界面生成器或XCode中看起來與我的和他們不同的任何東西,但是我已經有了隧道視覺,並且看不清楚什麼。
感謝,
比爾
我敢打賭,你不感到驚訝,你釘的答案!連接在MainWindow.xib文件中的UIDatePicker和MyTableViewController類之間,所以當我在MyTableViewController nib文件中查看時......沒有什麼可見的! Apple是否有理由選擇將UIDatePicker放入MainWindow nib文件而不是MyTableViewController nib文件?這似乎有點'斷開,但可能有一個聲音設計模式在這裏工作,我不知道。 (而且,這很有可能。)再次感謝,馬特! – BillEccles 2011-02-27 21:34:51
我快速瀏覽了一下這個示例,並且您對MainWindow.xib的奇怪使用完全正確。就我個人而言,我將在MyTableViewController nib中設置連接 - 感覺就像合適的範圍。把它推到MainWindow的唯一理由是設置一個與應用程序級對象UIApplication或它的委託之一的連接,這個例子沒有這樣做。很高興你排序雖然:) – mmccomb 2011-02-27 21:45:22