这是我在Stackoverflow上的第一篇文章.我是iOS开发的新手,我搜索并尝试了很多(超过两天),但我真的很难做到一些非常简单的事情.
我有一个主视图(全尺寸iPhone视图).在该视图中,我想要一个较小尺寸的子视图(例如290 x 400).此子视图必须嵌入导航控制器中.换句话说:我想在这个子视图的顶部有一个工作导航栏.
我使用容器视图在Storyboards中构建了它.没问题.但是,我想只在代码中执行此操作.我成功地在代码中创建了一个基于导航控制器的app 我还成功编写了一个带有子视图控制器的应用程序.问题似乎是将这些问题结合起来.
当我尝试在其中一个子视图控制器中加载navigationcontroller时,应用程序崩溃并说SubView视图控制器必须将Container视图控制器作为父视图,但它现在具有UINavigationcontroller作为父视图.
之后我尝试直接在子视图中加载navigationcontroller,如下所示:
SubViewVC *subviewcontroller = [[SubVC alloc] initWithNibName:@"SubVC" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:subviewcontroller];
[navController setView:subviewcontroller.view];
[self.view addSubview:subviewcontroller.view];
Run Code Online (Sandbox Code Playgroud)
但是,现在我遇到一个崩溃,说一个视图一次只能与一个控制器关联.子视图与SubViewVC相关联.必须先将其清除,然后再将其与UINavigationcontroller关联.
我理解这个问题,但不知道如何解决它.任何帮助深表感谢.
我有两个故事板.我找到了一些关于如何实例化另一个Storyboard的初始View Controller并移动(或者你说segue?)的代码.但这些示例使用了导航控制器.在我的情况下(登录页面),用户不应该返回到之前的Storyboard.该应用程序可以忘记旧的故事板,当我移动到新的时,它不再需要.
因此,第一个Storybard中层次结构顶部的View Controller可能会被遗忘,我不希望它成为下一个Storyboard的演示者.它不应该存在,演示者和层次结构的顶部现在应该是第二个Storyboard的初始视图控制器.
我怎样才能做到这一点?
我正在尝试自定义我UIImagePickerController的状态栏外观.我有一个自定义图像我用于后退按钮,它正确显示,但我想要做的是删除文本(所以它只是图像).我经常在我的应用程序中执行此操作,但我似乎无法在其中使用它UIImagePickerController.
我想我可以做点什么......
UIImagePickerController *uiipc = [[UIImagePickerController alloc]init];
uiipc.navigationController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
Run Code Online (Sandbox Code Playgroud)
然而,这似乎不起作用,当选择文件夹,例如"照片"时,我仍然可以获得自定义图像,旁边的文本"照片"为后退按钮.
有人可以帮我删除文字吗?
编辑:值得注意的是自定义图像是在我的应用程序委托中设置的,这就是为什么你在我的例子中没有看到它.
cocoa-touch objective-c uiimagepickercontroller uinavigationcontroller ios
我要求用户使用Touch Id进行身份验证(在iOS 8上)."触摸ID"对话框显示在另一个视图上方,该视图将在"输入密码"或"取消"按钮的情况下接收用户输入,而不是用户使用指纹进行身份验证.
如果成功 - 我正在弹出视图控制器.在"取消"或"输入密码"的情况下,我让用户输入密码,然后(如果密码正确) - 我正在弹出视图控制器.
如果用户手动输入密码,则会立即弹出视图.如果用户正在使用指纹 - 立即调用弹出代码(根据调试器和打印到控制台的NSLog) - 但UI在大约5秒后显示弹出.
可能是什么问题呢?
我想做的是改变后退按钮的高度.但是,据我所知,改变的唯一选择是宽度.所以,我以为我会创建一个带有我自己的小图像的自定义后退按钮.现在我使用viewDidLoad方法完成了这个,代码如下:
//Setup navigation bar
navigationController?.navigationItem.backBarButtonItem = UIBarButtonItem(image:UIImage(named:"back_arrow.png"), style:UIBarButtonItemStyle.Plain, target:nil, action:nil)
navigationController?.navigationItem.backBarButtonItem!.title = ""
Run Code Online (Sandbox Code Playgroud)
但是,后退按钮保持蓝色,大,并且标题为"后退".如何才能使此代码正常工作?调试器说它正在运行,但它没有改变任何东西.
我只需要显示箭头按钮并隐藏左侧导航按钮的文本.根据这个链接,我可以这样做.但如果我喜欢这样,滑动返回功能将被破坏.
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
Run Code Online (Sandbox Code Playgroud)
所以,我用这个来隐藏文字.
self.navigationController.navigationBar.topItem.title = @"";
Run Code Online (Sandbox Code Playgroud)
到目前为止,没关系.但是,如果我之前的视图的searchDisplayController处于活动状态并且推送到新视图,则会显示左侧导航按钮文本.我可以知道该怎么办吗?
我想将默认的backBarButtonItem颜色更改为白色,
我的代码如下所示
self.navigationItem.backBarButtonItem?.tintColor = UIColor.whiteColor()
Run Code Online (Sandbox Code Playgroud)
但它不适合我,任何想法?
uinavigationbar uinavigationcontroller uinavigationitem backbarbuttonitem swift
我在静态库项目中工作,我想在iOS项目的导航控制器中推送视图控制器我该怎么办?我这样做如下:
UIStoryboard * storyboard = [[[UIApplication sharedApplication] keyWindow] rootViewController].storyboard;
UIViewController* pushtoVC = [storyboard instantiateViewControllerWithIdentifier:@"home"];
UINavigationController *navController = [[[[UIApplication sharedApplication] keyWindow]rootViewController] navigationController];
[navController pushViewController:pushtoVC animated:YES];
Run Code Online (Sandbox Code Playgroud)
我也尝试了以下代码,但它不是推动视图控制器.
UIStoryboard * storyboard = [[[UIApplication sharedApplication] keyWindow] rootViewController].storyboard;
UIViewController* pushtoVC = [storyboard instantiateViewControllerWithIdentifier:@"home"];
UINavigationController *navController = [[[[UIApplication sharedApplication] keyWindow]rootViewController] navigationController];
[navController pushViewController:pushtoVC animated:YES];
Run Code Online (Sandbox Code Playgroud)
但是如果我在模态上使用当前视图控制器它正在工作但导航控制器仅隐藏View控制器已加载.在没有导航控制器的情况下模拟呈现的代码如下.
UIStoryboard * storyboard = [[[UIApplication sharedApplication] keyWindow] rootViewController].storyboard;
if ([[storyboard valueForKey:@"identifierToNibNameMap"] objectForKey:@"home"]) {
// the view controller exists, instantiate it here
UIViewController* myVC = [storyboard instantiateViewControllerWithIdentifier:@"home"];
myVC.modalPresentationStyle = UIModalPresentationFullScreen;
[[[[UIApplication sharedApplication]keyWindow] …Run Code Online (Sandbox Code Playgroud) 我的应用程序中有一个NavigationController.堆栈中的第一个屏幕是TermsConditionVC,然后是LoginVC,然后是MainVC.当我跑步时,它直接进入TermsConditionsVC.
但是,根据用户是否已同意条款条件和/或登录,我希望跳过TermsConditionsVC和/或LoginVC并直接进入MainVC.
在这种情况下我有多个导航控制器是没有意义的,但我不知道如何跳过屏幕(特别是导航控制器堆栈中的第一个屏幕?
我有一个导航控制器,用于我的父视图控制器以及我的子视图控制器.子视图控制器进入另外两个视图控制器,即"UserLoginViewController"和"RegisterVC".我希望UserLogin中的子视图按钮执行Button操作,该操作又执行涉及父视图控制器及其导航控制器的segue.
这是我使用的代码:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == Constants.embedSegue {
let childViewController = segue.destinationViewController as! UserLoginViewController
childViewController.delegate = self
}
}
Run Code Online (Sandbox Code Playgroud)
从parentVC调用UserLoginVC.
我得到一个错误说
无法将'UINavigationController'类型的值(0x109aa7860)转换为'Storey_Keeper.UserLoginViewController'(0x10645b810).
救命?
ios ×9
objective-c ×4
swift ×4
iphone ×2
cocoa-touch ×1
containers ×1
ios8 ×1
storyboard ×1
view ×1