我想實現我的MainContainerViewController類別返回主實例:實現一個UIViewController類
在我的.h:
@interface UIViewController(MainViewExtension)
/** Convience method for getting access to the MainContainerViewController instance */
- (MainContainerViewController *)mainContainerExtension;
@end
在我的.m
@implementation UIViewController(MainViewExtension)
- (MainContainerViewController *)mainContainerExtension
{
return (MainContainerViewController *)self;
}
@end
所以從一些外部視圖控制器,我做self.mainContainerExtension來訪問實例,並且只聲明瞭一個實例,但它沒有給我正確的實例。
NSLog(@"number of children:%i", [self.mainContainerExtension.childViewControllers count]);
這將返回0,即使它應該是3,所以這就是我知道它沒有給我正確的結果。我錯過了什麼嗎?
編輯:我知道這不會給我正確的實例的方式是因爲在MainContainerViewController
的viewDidLoad
,我有這樣的:
- (void)viewDidLoad
{
appDelegate.notesViewController=[[NotesViewController alloc] init];
appDelegate.notesViewController.mainContainer=self;
[self addChildViewController: appDelegate.notesViewController];
}
每個NotesViewController
有MainContainerViewController
類型的屬性,從而使我總是有辦法從NotesViewControllers
訪問MainContainerViewController
。但是我剛剛瞭解了類別和擴展,並且我認爲實現一個類別可以讓我更方便地訪問容器視圖,而不是在每個視圖控制器上都有屬性。這是我第一次,所以我敢肯定,我在執行類別時做錯了什麼,只是不知道它是什麼。
你想完成一個單身?你能否粘貼一些顯示失敗比較的代碼?也就是說,ExpectedHandleToVC!= self.mainContainerExtension。比較或NSLog(@「%p」,self)是測試其工作是否更直接的方法。 – danh 2012-03-25 14:38:23
我對'NSLog(@%@「,self.mainContainerExtension)的輸出是:''。不太確定這是什麼意思,儘管 –
Snowman
2012-03-25 14:45:28
它是指向實例的指針。換句話說,是什麼讓你認爲它是錯的?典型的(非標籤欄)UIViewController應該有0個childViewControllers。 – danh 2012-03-25 14:59:10