情況: 在我的應用程序中有很多視圖控制器,它們以導航或模式視圖控制器的形式呈現。該應用幾乎可以在所有屏幕上與服務器通信。我想在他/她的憑證過期時向用戶顯示登錄屏幕。我想將登錄屏幕顯示爲屏幕上當前視圖頂部的模式,並在登錄成功後立即關閉。 我真的不知道我該如何做到這一點。如果某個視圖控制器在屏幕上顯示模式視圖,並且還需要將登錄屏幕顯示爲模式,那麼我應該從哪裏進行此操作。我嘗試在appDelegate中切換窗口的rootViewController,但它不能很好地工作,也弄亂了很多東西。請爲我提供建議。如何在頂部彈出視圖控制器?
-1
A
回答
1
我看到你的問題。我認爲最好的方法是在課程生命週期內有一個簡單的課程,例如LoginHandler.h
。
您不必在應用程序啓動時對其進行初始化。你可以實現一個方便的技巧總是得到這個類的同一個實例,當你需要它:
// @interface
+(id)sharedHandler;
//@implementation
+(id)sharedHandler {
static id sharedHandler = nil;
if (sharedHandler == nil) {
[sharedHandler = [[LoginHandler alloc] init];
}
return sharedHandler;
}
現在,您只需用[LoginHandler sharedHandler]
,類似於用戶NSUserDefaults
或UIApplication
得到共享實例。
你可以有一個像
-(BOOL)renewLoginFromViewController:(UIViewController*)controller`;
的方法呈現的模型視圖控制器是這樣的:
[controller presentModalViewController:loginScreen];
,並返回YES
如果登錄成功(或不前消失)
你可以處理這個類的所有登錄邏輯。這將是一個很好的教科書示例encapsulation。
2
退房UIViewController
的presentViewController:animated:completion:
顯示模態視圖的方法(只要您不是iOS版的< 5.0)。
0
只有在應用程序啓動時才檢查它是一件好事。這種方法建議在你的AppDelegate.m上執行didFinishLaunchWithOptions。
你可以做這樣的事情:
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
if (USER_HAS_VALID_CREDENTIALS) {
self.viewController = [[[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil] autorelease];
} else {
self.viewController = [[[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil] autorelease]; // need to get credentials
}
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
記住登錄成功後啓動從LoginViewController的RootViewController的。
相關問題
- 1. 彈出到導航視圖控制器頂部
- 2. 如何在推送的視圖控制器下彈出視圖控制器?
- 3. 將Tabbar控制器放在視圖控制器的頂部
- 4. MVYSideMenu彈出到根視圖控制器
- 5. 彈出到初始視圖控制器
- 6. 視圖控制器彈出ttthumbsviewcontroller
- 7. 將視圖控制器彈出到一個不存在的視圖控制器
- 8. 使視圖總是彈出頂部
- 9. 如何在彈出視圖控制器上做翻頁動畫?
- 10. 如何'彈出'到視圖控制器不在堆棧上
- 11. Xcode:如何創建一個彈出視圖控制器出現在另一個視圖控制器
- 12. 不使用導航控制器時彈出視圖控制器?
- 13. 如何/何時在彈出另一個視圖控制器後立即推送視圖控制器?
- 14. 添加視圖到頂部視圖控制器
- 15. 調用視圖控制器類而不彈出視圖控制器本身
- 16. 從彈出視圖控制器獲取數據到父視圖控制器
- 17. 如何在IB控制哪些子視圖在頂部?
- 18. 如何在視圖控制器數組內部釋放視圖控制器?
- 19. 如何在iphone中根視圖控制器彈出和解除視圖控制器
- 20. 如何卸載彈出的視圖控制器?
- 21. 如何彈出初始視圖控制器
- 22. 如何通過授權推送或彈出視圖控制器?
- 23. 如何彈出到不同的視圖控制器
- 24. 如何從導航控制器彈出當前視圖?
- 25. 我該如何彈出一個特定的視圖控制器?
- 26. 如何彈出拆分視圖控制器「DetailViewController?」
- 27. 主視圖控制器不在分割視圖控制器中的頂部/底部酒吧下延伸
- 28. 導航控制器及其頂部視圖控制器是否可以同時顯示視圖控制器?
- 29. 不會彈出到子視圖控制器的父視圖
- 30. 從彈出視圖中的tableViewController訪問父視圖控制器
感謝蒙迪。有效。 – user1409592
然後請檢查複選標記;-)。 – Mundi
出於好奇並且與手邊的問題沒有任何關係,這是擁有某個班級共享對象的標準方式嗎? – esqew