使用 ios5 和情节提要推送带有参数的视图控制器
Posted
技术标签:
【中文标题】使用 ios5 和情节提要推送带有参数的视图控制器【英文标题】:push view controller with arguments using ios5 and storyboard 【发布时间】:2011-12-26 14:01:42 【问题描述】:我正在使用 sdk 5 和 Storyboard 开发一个 iPad 应用程序,该应用程序来自一个已经工作的 iPhone 应用程序(使用单独的 xibs 开发)。我了解情节提要的工作原理,但我想推送带有参数的视图控制器。按钮调用 logIn2 操作,如:
- (IBAction)logIn2: (NSString *)strUser: (NSString *)strPass
userViewController *UserViewController = [[userViewController alloc] initWithNibName:@"userViewController" bundle:nil stringOne:strUser stringTwo:strPass];
//UserViewController.hidesBottomBarWhenPushed = YES;
[[self navController] pushViewController:UserViewController animated:YES];
这工作正常,但使用 sdk 5 在第一行返回错误。如何通过参数推送视图?谢谢。
【问题讨论】:
错误:接收器类型 'userViewController' 例如消息未使用选择器 'initWithNibName:bundle:stringOne:stringTwo:' 声明方法 [4] 【参考方案1】:如果您说您想将您的应用程序转换为使用 Storyboard 和 Segues,那么您将制作一个 Segue 来推送 UserViewController。在 UserViewController 中放置一些属性来存储参数。然后覆盖 prepareForSegue 并设置其中的属性。有关详细信息,请参阅此答案:
Properly accessing a segue's destination view controller to assign protocol delegates
【讨论】:
【参考方案2】:从错误消息中很明显,在您的 UserViewController 上没有方法声明 initWithNibName:bundle:stringOne:stringTwo:'。你的 UserViewController 是什么样子的?
【讨论】:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil stringOne:(NSString *)aStringOne stringTwo:(NSString *)aStringTwo 【参考方案3】:您是否在 .h 文件中声明了自定义初始化程序?否则,只会找到标准的 initWithNibName 初始化程序作为选择器,而不是您指定的初始化程序 - 因此会出现错误消息。
【讨论】:
在标题中声明它是不够的;还必须在 .m. 中实现它。以上是关于使用 ios5 和情节提要推送带有参数的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章