এরিক এর উত্তর সম্পূর্ণ করতে (পপওভার, নেভিগেশন কন্ট্রোলার, ট্যাববারকন্ট্রোলাররা কে রেখে গেছে, ট্র্যাভারিংয়ের সময় কয়েকটি অন্যান্য ভিউ কন্ট্রোলারের সাথে পূর্বরূপ হিসাবে যোগ করা দেখুন দেখুন) সম্পূর্ণ করার জন্য, এখানে বর্তমানে দৃশ্যমান দর্শনীয় নিয়ামকটি ফিরিয়ে দেওয়ার জন্য আমার সংস্করণটি এখানে রয়েছে:
================================================== ===================
- (UIViewController*)topViewController {
return [self topViewControllerWithRootViewController:[UIApplication sharedApplication].keyWindow.rootViewController];
}
- (UIViewController*)topViewControllerWithRootViewController:(UIViewController*)viewController {
if ([viewController isKindOfClass:[UITabBarController class]]) {
UITabBarController* tabBarController = (UITabBarController*)viewController;
return [self topViewControllerWithRootViewController:tabBarController.selectedViewController];
} else if ([viewController isKindOfClass:[UINavigationController class]]) {
UINavigationController* navContObj = (UINavigationController*)viewController;
return [self topViewControllerWithRootViewController:navContObj.visibleViewController];
} else if (viewController.presentedViewController && !viewController.presentedViewController.isBeingDismissed) {
UIViewController* presentedViewController = viewController.presentedViewController;
return [self topViewControllerWithRootViewController:presentedViewController];
}
else {
for (UIView *view in [viewController.view subviews])
{
id subViewController = [view nextResponder];
if ( subViewController && [subViewController isKindOfClass:[UIViewController class]])
{
if ([(UIViewController *)subViewController presentedViewController] && ![subViewController presentedViewController].isBeingDismissed) {
return [self topViewControllerWithRootViewController:[(UIViewController *)subViewController presentedViewController]];
}
}
}
return viewController;
}
}
================================================== ===================
এবং এখন শীর্ষ সর্বাধিক দেখা নিয়ন্ত্রক পেতে আপনাকে যা করতে হবে তা হ'ল নিম্নলিখিত পদ্ধতিটিকে কল করুন:
UIViewController *topMostViewControllerObj = [self topViewController];