2013-08-29 114 views
3

我對我認爲可能對Objective-C中的類如何工作的根本性誤解感到磕磕絆絆。我正在使用Storyboard,但在這個應用程序中,我想爲我的一個視圖控制器上的文本框創建一個簡單的自定義日期選擇器視圖。然而,我似乎具有從我的視圖控制器訪問任何日期選擇器類的屬性的一個問題:如下故事板和xib在同一個項目中使用

首先我建模我CustomDatePicker.xib在IB:

enter image description here

我已通過sublcassing的UIView創建一個自定義類,如下所示:

CustomPicker.h

@interface CustomPickerView : UIView 

@property (strong, nonatomic) IBOutlet UIDatePicker* datePicker; 

@end 

CustomerPicke R.M

@implementation CustomPickerView 

- (id)init 
{ 
    self = [super initWithFrame:CGRectMake(0, 0, 320, 258)]; 
    if (self) { 
     [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"CustomPickerView" owner:self options:nil] objectAtIndex:0]]; 
    } 
    return self; 
} 

在我的ViewController:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.customPickerView=[[CustomPickerView alloc] init]; 

    // THE MAIN ISSUE IS... 
    // Following line has no effect on how picker is presented ??? 
    self.customPickerView.datePicker.datePickerMode=UIDatePickerModeTime; 

    self.dateField.inputView=self.customPickerView; 
} 

當文本字段被竊聽,我CustomDatePicker彈出的罰款。不過,我似乎無法從我的ViewController的viewDidLoad方法設置.datePickerMode。我可以通過IB更改.datePickerMode的唯一方法,當然這在運行時不會起作用。

我已經連接IB的插座,並且能夠從類內但不是ViewController訪問datePicker.date。

我已經研究並觀察了許多方法來實現這個概念。我的問題不是如何實現一個CustomDatePicker那就是「爲什麼我不能訪問從視圖控制器我CustomDatePicker該實例化它的性能

回答

1

我成功地改變了datePickerMode屬性時,我裝的NIB是這樣的:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"CustomPickerView" owner:self options:nil]; 
    self.customPickerView = (CustomPickerView *)[nibArray objectAtIndex:0]; 
    self.customPickerView.datePicker.datePickerMode = UIDatePickerModeTime; 

    self.dateField.inputView = self.customPickerView; 
} 

而且你也許可以刪除自定義視圖的init方法完全。我從來沒有見過一個NIB加載在init方法就像你做的事情。雖然這是可能的,我相信這是什麼原因造成您的問題。在ViewController的viewDidLoad中加載NIB,並直接設置它似乎更直接。

+0

感謝您抽空看看。我看到你做了什麼,但我真的想要在我寫的CustomPickerClass中保持nib加載。這樣,當我實例化CustomPickerClass時,筆尖被加載。此外,按照您所描述的方式實施會導致CustomPicker Class本地方法的其他問題,例如按下完成按鈕時。我將這部分代碼留給了我的主要問題。 –