2014-02-28 53 views
1

嗨即時嘗試設置屬性在另一個viewcontroller屬於masterviewcontoller,但它不會步入設置方法。我已經用Masterviewcontroller完成了Detailviewcontroller的工作,它工作正常。現在我複製該代碼並嘗試對masterviewcontroller執行與名爲AddNoteViewController的控制器相同的操作。相同的代碼,但它不會進入設置方法。 我有importet兩個類相同 謝謝你的幫助!設置屬性在另一個視圖控制器

調試這個作品

步驟1 masterviewController.m

//MasterViewController.m 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
NSDate *object = _objects[indexPath.row]; 
NSDate *kundnr = _kundnr[indexPath.row]; 
self.detailViewController.detailItem = object; 
self.detailViewController.detailIdentity = kundnr; 
self.addNoteViewController.AddNoteFtgnr = kundnr; 

} 

第二步DetailViewController.h

//DetailViewController.h 
@property (strong, nonatomic) id detailItem; 
@property (strong, nonatomic) id detailIdentity; 

步驟3 DetailViewController.m

//DetailViewController.m 
- (void)setDetailItem:(id)newDetailItem 
{ 
if (_detailItem != newDetailItem) { 
    _detailItem = newDetailItem; 

    // Update the view. 
    [self configureView]; 
} 

if (self.masterPopoverController != nil) { 
    [self.masterPopoverController dismissPopoverAnimated:YES]; 
}   
} 

- (void)setDetailIdentity:(id)newDetailItentity 
{ 
if (_detailIdentity != newDetailItentity) { 
    _detailIdentity = newDetailItentity; 

    // Update the view. 
    [self configureView]; 
} 

if (self.masterPopoverController != nil) { 
    [self.masterPopoverController dismissPopoverAnimated:YES]; 
} 
} 

現在不工作

步驟1 masterviewController.m 的AddNoteviewController(這是確定我認爲)

//MasterViewController.m 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
NSDate *object = _objects[indexPath.row]; 
NSDate *kundnr = _kundnr[indexPath.row]; 
self.detailViewController.detailItem = object; 
self.detailViewController.detailIdentity = kundnr; 
self.addNoteViewController.AddNoteFtgnr = kundnr; 

} 

步驟2 AddNoteViewController.h (這是確定我認爲)

//AddNoteViewController.h 
@interface AddNoteViewController : UIViewController 

@property (strong, nonatomic) id AddNoteFtgnr; 
@end 

第3步AddNoteViewController.m (這是錯誤的是它不踩在這裏的話)

//AddNoteViewController.m 
-(void)setAddNoteFtgnr:(id)AddNoteFtgnr 
{ 

//Code that sets the property 

} 
+0

你是否在'masterviewController'中的任何位置初始化'addNoteViewController'? – Akhilrajtr

+0

我做了一個#import in .m和.h我做了類AddViewController;和一個屬性非常相似,我爲detailview –

回答

0

反對

我解決了我的問題。

在MasterviewController中,我必須初始化沒有發生的viewcontroller。

AddNoteViewController* addNoteViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"addNoteViewController"]; 

addNoteViewController.addNoteFtgNr = kundnr; 
1

您的主視圖控制器的detailViewController財產可能是零。在您的tableview:didSelectIndexPath:方法中設置一個斷點並檢查detailViewController屬性。如果你不知道如何設置斷點,那麼在顯示self.detailViewController中的值的方法開始處添加一條NSLog語句。 (並瞭解斷點。)

+0

是的,我知道如何設置斷點,當我調試時,我會解釋什麼發生。它不是主 - >詳細信息是它的主要AddNoteViewController和詳細信息 - > AddNoteView控制器doesent工作,要麼我試圖這 –

+0

如果你的setter沒有被調用,那麼要麼你有setter的名稱定義不正確,或者您的主視圖控制器中的addNoteViewController屬性爲零。 –

+0

有一點是錯誤的:屬性名稱應該以小寫字母開頭,並且應該使用類似'self.addNoteViewController.dddNoteFtgnr = kundnr;'的代碼來設置它們。然而,自定義setter方法應該像' - (void)setAddNoteFtgnr:(id)addNoteFtgnr'一樣定義,其中方法名稱以「set」開始,然後屬性名稱的第一個字母切換爲大寫字母。我不知道這是不是問題的原因,但它是錯誤的,應該修復。 –