3
A
回答
0
您可以使用以下方法
- (UIViewController *)topViewController{
return [self topViewController:[UIApplication sharedApplication].keyWindow.rootViewController];
}
- (UIViewController *)topViewController:(UIViewController *)rootViewController{
if(rootViewController.presentedViewController == nil){
return rootViewController;
}
if ([rootViewController.presentedViewController isMemberOfClass:[UINavigationController class]]) {
UINavigationController *navigationController = (UINavigationController *)rootViewController.presentedViewController;
UIViewController *lastViewController = [[navigationController viewControllers] lastObject];
return [self topViewController:lastViewController];
}
UIViewController *presentedViewController = (UIViewController *)rootViewController.presentedViewController;
return [self topViewController:presentedViewController];
}
找到頂視圖控制器,你可以用這個方法,我已經做了,但是,創建一個類我的Mac,我在我的手機上輸入這個對不起,格式不好。
在創建從任何地方
[[UIApplication sharedApplication].keyWindow.rootViewController] topViewController];
類別打電話時我回到我的Mac
編輯
繼承人的類別,我將添加此類別:
@interface UIViewController (TopViewController)
- (UIViewController *)topViewController;
@end
#import "UIViewController+TopViewController.h"
@implementation UIViewController (TopViewController)
- (UIViewController *)topViewController {
return [self topViewController:[UIApplication sharedApplication].keyWindow.rootViewController];
}
- (UIViewController *)topViewController:(UIViewController *)rootViewController
{
if (rootViewController.presentedViewController == nil) {
return rootViewController;
}
if ([rootViewController.presentedViewController isMemberOfClass:[UINavigationController class]]) {
UINavigationController *navigationController = (UINavigationController *)rootViewController.presentedViewController;
UIViewController *lastViewController = [[navigationController viewControllers] lastObject];
return [self topViewController:lastViewController];
}
UIViewController *presentedViewController = (UIViewController *)rootViewController.presentedViewController;
return [self topViewController:presentedViewController];
}
@end
忘了提及我有這個從here
3
方法這裏的UIApplication的迅速擴展查找頂視圖控制器
extension UIApplication
{
class func topViewController(_ base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController?
{
if let nav = base as? UINavigationController
{
let top = topViewController(nav.visibleViewController)
return top
}
if let tab = base as? UITabBarController
{
if let selected = tab.selectedViewController
{
let top = topViewController(selected)
return top
}
}
if let presented = base?.presentedViewController
{
let top = topViewController(presented)
return top
}
return base
}
}
調用與
let topController = UIApplication.topViewController()
相關問題
- 1. iOS - 獲取當前視圖控制器
- 2. 如何在頁面視圖控制器中獲取當前視圖控制器
- 3. 如何從其他視圖控制器獲取當前視圖?
- 4. 如何在Xamarin中的頁面視圖控制器中獲取當前可見視圖控制器.IOS
- 5. 如何獲取推送我當前視圖的先前視圖控制器
- 6. Swift:如何通過SCDynamicStoreCopyConsoleUser獲取控制檯用戶,UID和GID?
- 7. swift - 進入前臺後的視圖
- 8. iOS:在當前模態視圖控制器後面切換視圖控制器?
- 9. 如何在iOS中找到當前視圖控制器
- 10. 如何?控制器不返回任何內容/當前視圖
- 11. 如何在獲取Ruby之後覆蓋當前控制檯行?
- 12. 以任何方式通過編程獲取segue(和目標視圖控制器)?
- 13. 獲取當前視圖控制器名稱在父視圖控制器
- 14. 如何通過swift代碼更改初始視圖控制器
- 15. 如何獲取當前視圖控制器(當前呈現)使用故事板編號在swift progaramatically?
- 16. 如何獲取Laravel中的當前控制檯命令
- 17. 如何從任何其他視圖控制器獲取視圖控制器的詳細視圖層次結構?
- 18. iOS - 容器視圖控制器Swift
- 19. 如何在當前視圖控制器後面添加視圖控制器的視圖?
- 20. Swift - 當應用程序進入後臺時進入視圖
- 21. 如何在swift iOS中創建通用的彈出視圖控制器
- 22. 如何從導航控制器ios中刪除以前的視圖控制器?
- 23. Swift IOS讓視圖控制器在彈出後在後臺運行
- 24. 在控制器或視圖文件中獲取當前操作
- 25. 如何獲取控制檯日誌並在文本視圖中顯示[Swift]
- 26. 如何獲取來自控制器或視圖的路線的當前模型?
- 27. 如何在後臺和前臺獲取當前的頁面?
- 28. iOS - 如何在Swift的不同視圖控制器中使用小視圖
- 29. 如何在當前視圖控制器視圖上添加UIview?
- 30. 如何通過滑軌控制檯獲取表中的行數
如果你創建類,並添加斯威夫特再也沒有問題。 –
不管是什麼頂級視圖控制器,它會返回tabbar,如果它是 –
如果呈現的話不會返回alertcontroller嗎? –