2011-09-02 27 views

回答

1

任何複雜的用戶交互使用UIViewController。爲了以模態方式呈現視圖控制器,您必須找到合適的父視圖控制器。 可以使用的UIWindow這樣的-rootViewController方法可以訪問應用程序的根視圖控制器:

NSArray *windows = [[UIApplication sharedApplication] windows]; 
UIViewController *rootViewController = (windows.count > 0) ? [[windows objectAtIndex:0] rootViewController] : nil; 
if (rootViewController) 
    // Present your view controller modally 
else 
    // Unable to present any view controller 

你也可以提供一個委託方法,並用它來得到一個視圖控制器:

- (UIViewController *) rootViewControllerForComplexClass:(id)complexClass; 

在你的庫中,你可以訪問代理並訪問這樣的視圖控制器:

UIViewController *rootViewController = [self.delegate rootViewControllerForComplexClass:self]; 
// Present your view controller modally 
+0

我沒有使用-keyWindow,因爲通常你只有一個UIWindow,它在你的UIApplicationDelegate類中聲明,並且總是窗口在索引0而不是最頂層! –

2

你的圖書館將有機會獲得像[UIApplication sharedApplication]單身,所以如果你想呈現的東西給用戶,你可以添加您的視圖直接窗口:

- (void)addViewToWindow:(UIView *)aView 
{ 
    UIWindow *mainWindow = [[UIApplication sharedApplication] keyWindow]; 
    [mainWindow addSubview:aView]; 
} 

也許一個更好的方法是但是,從視圖控制器中以模態方式呈現它。

+0

我可以創建視圖控制器並添加在窗口,然後調用它的方法來啓動模態交互? – ShoeFly

+1

是的,但如果這是你要去的路線,我認爲你應該重新考慮你的選擇。爲什麼不讓你的庫的用戶用'-presentModalViewControllerAnimated:'呈現你的視圖控制器? –

相關問題