我需要访问UITabBarController,以及来自appDelegate的第二个子视图.
这是我在applicationDidEnterBackground中尝试过的:
let splitViewController = self.window!.rootViewController as! UISplitViewController
let leftNavController = splitViewController.viewControllers.first as! UINavigationController
let tabController = leftNavController.tabBarController! as UITabBarController
let controllers : Array = tabController.viewControllers!
print("viewcontrollers \(controllers)")
Run Code Online (Sandbox Code Playgroud)
该应用程序崩溃,抱怨tabController是零.如果我从storyboard中删除UINavigation控制器,则可以使用以下命令轻松访问UITabBarController:
let tabController = splitViewController.viewControllers.first as! UITabBarController
Run Code Online (Sandbox Code Playgroud)
访问UITabBarController的子控制器的正确方法是什么,其中UISplitView是根?
对于我的iPad应用程序,当按下按钮时,我有一个以模态显示的视图作为表单.为了让键盘在文本字段中输入文本后被解雇,我按照建议进行了尝试;
"disablesAutomaticKeyboardDismissal"方法.
这不起作用,实际上,该方法永远不会根据日志调用.键盘将解除iPhone或我选择不提供模态.
这是我的代码:
- (BOOL)disablesAutomaticKeyboardDismissal
{
NSLog(@"method calls");
return NO;
}
- (IBAction)showNewView:(id)sender
{
MyViewController *mvc =
[[MyViewController alloc] init];
// some lines about setting content
//...
UINavigationController *navController = [[UINavigationController alloc]
initWithRootViewController:mvc];
[navController setModalPresentationStyle:UIModalPresentationFormSheet];
[self presentViewController:navController animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
- (BOOL)disablesAutomaticKeyboardDismissal 与否,键盘不会被解除,除非我删除tis行:
// [navController setModalPresentationStyle:UIModalPresentationFormSheet];
Run Code Online (Sandbox Code Playgroud)
然而,它不再以我想要的方式呈现.
谁能看到我做错了什么?