2013-01-05 81 views
2

只是一個簡單的問題如何訪問呈現模態視圖的UIViewController類/ className?

目前我提出這樣一個模式的看法:

+ (void)showModalController:(id)ContentController InViewController:(UIViewController*)vc withFrame:(CGRect)rect{ 

UINavigationController *modalViewNavController = [[UINavigationController alloc] initWithRootViewController:ContentController]; 
modalViewNavController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
modalViewNavController.modalPresentationStyle = UIModalPresentationFormSheet; 

[vc presentModalViewController:modalViewNavController animated:YES]; 

//it's important to do this after presentModalViewController 
modalViewNavController.view.superview.frame = rect; 

//self.view assumes the base view is doing the launching, if not you might need self.view.superview.center etc. 
modalViewNavController.view.superview.center = vc.view.center; 

[modalViewNavController release]; 

}

我通過,這將是呈現的UIViewController內容的值,在自定義模式的大小。我還傳遞UIViewController的值,其中將呈現模態。

就代碼而言,我想知道內容類中的「vc」名稱,如果可以的話。

編輯

可以說我有2類,一種叫DetailViewController那裏進行模態的呈現。另一個稱爲ModalContentViewController

我想在ModalContentViewController類知道(視圖出現時,或加載)的DetailViewController的名稱。

任何想法?

PD:目前使用...

的XCode 4.4.1 的iPad模擬器iOS5.1 iOS5.1

+0

你能清理一下你的問題嗎?我很困惑你是否獲得了內容控制器或呈現視圖控制器的名稱。另外,您應該考慮兩點改進:將ContentController聲明爲「UIViewController *」而不是「id」。這確保瞭如果你嘗試傳遞不是'UIViewController'(子類)的東西,你會得到一個警告,這很好,因爲'initWithRootVC'方法需要一個視圖控制器。 – MaxGabriel

+0

其次,您可能會考慮將此方法設置爲「UIViewController」的一個類別,您可以通過在UIViewController上的文件>新建文件> obj-c category> category來執行此類別。然後,在'UIViewController'上添加這個方法作爲實例方法。這是編寫該方法的一種更自然的方式,而不是通過視圖控制器傳遞給它('InViewController:') – MaxGabriel

+0

感謝MaxGabriel, 我會做出改變並閱讀一些有關類別 – iDaniel89

回答

3

外觀爲UIViewController財產presentingViewController。下面是從文檔報價:

如果收到此消息視圖控制器由 提出另一種觀點認爲控制器,這個屬性保存 正在呈現它的視圖控制器。如果視圖控制器沒有出現,但其中的祖先正在呈現其中一個 ,則該屬性持有控制器呈現最近的祖先的視圖 。如果控制器或其任何祖先都未被呈現,則該屬性 保持爲零。

因此,您可以使用該屬性來獲取呈現VC的名稱。

+0

Thanks !, with the祖先我可以訪問視圖控制器。 – iDaniel89

2

您可以使用NSStringFromClass(vc.class)將類名稱作爲NSString

+0

嗨MaxGabriel, 我知道如何訪問類名,但我無法訪問ModalViewController類(ModalView的內容)DetailViewController(它出現在那裏)。我在問題上張貼了一個更清晰的例子。 – iDaniel89

相關問題