iPhone ModalViewController 来自第一个标签栏视图
Posted
技术标签:
【中文标题】iPhone ModalViewController 来自第一个标签栏视图【英文标题】:iPhone ModalViewController from First Tab Bar View 【发布时间】:2012-08-22 06:28:54 【问题描述】:我正在尝试在加载 TabBarController 视图之前启动初始登录/注册屏幕。我已经读过将 ModalViewController 放在第一个视图中是一个不错的方法。这可行,但我正在尝试将导航控件添加到 ModalViewController。我遇到以下问题:
1 - 错误:在“AppDelegate”类型的对象上找不到属性“navigationController”
2 - 警告:使用不兼容类型“id”的表达式初始化“AppDelegate *”
这是我的 ModalViewController 上的代码:
-(IBAction)signUpButtonTapped
// i need to get the control for main navigation controller
AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
[appDelegate.navigationController popToRootViewControllerAnimated:NO];
// create object from app main view to push it
SignUpViewController *signUpViewController = [[SignUpViewController alloc] initWithNibName:@"SignUpViewController" bundle:nil];
[AppDelegate.navigationController pushViewController:signUpViewController animated:YES];
有人有什么想法吗?非常感谢!
【问题讨论】:
使用(AppDelegate*)
对 AppDelegate 进行类型转换将解决警告
看看我的回答,它也会解决你的错误
【参考方案1】:
您的代码中有两个问题
1) 使用类名访问 OBJECT。它必须是 appDelegate.nav...(小号 a
用于解决 1 错误)
[appDelegate.navigationController pushViewController:signUpViewController animated:YES];
2) 类型转换分配(用于解决 2 警告)
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
所以你的完整工作代码必须像
-(IBAction)signUpButtonTapped
// i need to get the control for main navigation controller
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
[appDelegate.navigationController popToRootViewControllerAnimated:NO];
// create object from app main view to push it
SignUpViewController *signUpViewController = [[SignUpViewController alloc] initWithNibName:@"SignUpViewController" bundle:nil];
[appDelegate.navigationController pushViewController:signUpViewController animated:YES];
【讨论】:
【参考方案2】:AppDelegate 实例声明如下:
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication]delegate];
改变这个,你就可以开始了。
【讨论】:
太好了,这消除了我的警告,但我仍然收到错误:在“AppDelegate”类型的对象上找不到属性“navigationController”。我已经声明了它,但它一直显示这个错误。有任何想法吗?谢谢!【参考方案3】:在你的代码中修改这一行
AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
作为
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
现在就试试吧
【讨论】:
太好了,这消除了我的警告,但我仍然收到错误:在“AppDelegate”类型的对象上找不到属性“navigationController”。我已经声明了它,但它一直显示这个错误。有任何想法吗?谢谢! 你是否在 Appdelegate 中声明了 Navigationcontroller 的属性【参考方案4】:1.确保您的 appDelegate 有一个名为 navigationController
的 UINavigationController
属性。
2.代码的第 2 行:
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
3.您的代码的最后一行:
[appDelegate.navigat....
不是:[AppDelegate.navigatio....
【讨论】:
以上是关于iPhone ModalViewController 来自第一个标签栏视图的主要内容,如果未能解决你的问题,请参考以下文章
在 iphone 5 和 iphone 6 中动态设置字体大小