2012-01-23 184 views
1

在我的iOS應用程序設置中,我有一個通用對象(讓我們稱之爲UniversalObj)在頂層對象中聲明。 (在我的情況SampleAppDelegateXcode從頂層對象獲取對象

在此,我必須包含兩個UIViewController(我希望有UniversalObj訪問

SampleAppDelegate,我曾嘗試以下通過UniversalObj給它一個的UITabBarController:

MyViewController *vc = (MyViewController *) [self.tabBarController.viewControllers.objectAtIndex:0]; 
[vc setMyObj:self.universalObject]; 

這樣做的問題是,當我這樣做,有時候,觀點尚未加載這麼MyViewController.myObj==null

現在,我試圖從MyViewController訪問SampleAppDelegate(類型NSObject)。我可以使用UITabBarController***self.parentViewController***,但我不知道如何去SampleAppDelegate

如何從MyViewController訪問UniversalObjSampleAppDelegate?如何更改MyViewController中的self.parentViewController一行以獲得SampleAppDelegate?還是有更好的方法來做到這一點?

在此先感謝您的幫助。

Guvvy

回答

0

我發現我能夠從MyViewController訪問對象是這樣的:

[self setMyObj:[(SampleAppDelegate *)[UIApplication sharedApplication].delegate universalObj]]; 
1

你會使用-[UINib instantiateWithOwner:options:]

NSArray * topLevelObjects = [nib instantiateWithOwner:pwner options:options]; 
+0

謝謝!但是,我如何獲得一個UINib對象?我只是用'[UINib alloc]'做一個嗎?我應該爲'owner'參數指定什麼?它只是'self.parentViewController'嗎? – Gavy

+0

@Guvvy a + b)'+ [UINib nibWithNibName:bundle:]'是常用的方法。 c)您必須根據您在此處加載的實際筆尖來確定 - 它的文件所有者是什麼?這是否對應於現有對象/實例或新實例? – justin

+0

我以另一種方式想出了它,但感謝您的幫助! – Gavy