ios - 将数据从一个 View Controller 传递到另一个; iOS <=4 对比 iOS 5

标签 ios uinavigationcontroller ios5

首先,介绍一下背景。我是 iOS 开发的新手,我已经在 .Net 领域工作了很长时间,这可能就是我问这个问题的原因,但现在就开始吧。

基本设置是这样的。您有一个 UINavigationController 和一个我们称之为 MasterViewControllerRootViewController。当此 MasterViewController 上发生某些操作时,我们希望深入到 DetailsViewController。但是,我们还想将一些数据传递给 DetailsViewController

据我了解,在以前版本的 SDK(iOS 5 之前)中,方法与此类似:

@implementation MasterViewController

    -(IBAction)someAction
    {
       DetailsViewController *dvc = [[DetailsViewController alloc]initWithNibName:@"DetailsView" bundle:nil];
       dvc.someDataProp = [self getSomeDataSomeHow];
       [[self navigationController] pushViewController:dvc animated:YES];
    }

@end

但是现在,在 iOS 5 中,这似乎是使用 Storyboard 和 segues 完成的。在 XCode 中,您设置从 MasterViewController 到 DetailsViewController 的转接,然后在代码中执行如下操作:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
   [segue.destinationViewController setSomeDataProp:[self getSomeDataSomeHow]];
}

我的问题基本上是这样的:不知何故,旧方法对我来说感觉更清晰。您对要推送到导航堆栈的 ViewController 类型非常明确,并且可以轻松地在其上设置属性。不过在新方法中,destinationViewControllerid 类型(原因很明显),我觉得它不太干净。同样,这可能是我的 .Net 方面出现了,但这在 iOS 中常见吗?只使用 id 并抛开谨慎?

最佳答案

使用 Storyboard,您可以为 segue 分配一个命名标识符, 选择 segue,然后在属性检查器中,您可以为 segue 标识符添加名称。

并且在 prepareForSegue 方法中,您应该检查此标识符,因此您将明确知道将要执行哪个转场以及 destinationViewController 将是什么。

if ([segue.identifier isEqualToString:@"My First Segue Identifier"])
{    
   DetailsViewController *dvc = (DetailsViewController *) segue.destinationViewController;
   // Set the DVC's properties 
}

关于ios - 将数据从一个 View Controller 传递到另一个; iOS <=4 对比 iOS 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8694173/

相关文章:

iphone - 在 Restkit 中处理 NSAsserts 抛出

ios - 如何禁用某些 ViewController 的导航栏

ios - Xamarin iOS PushViewController 空引用异常

json - 如何在 iOS5 中将 JSON 数据对象发布到服务器?

iphone - 应用程序在使用 Restkit for IOS 进行对象映射期间意外崩溃

ios - glGetRenderbufferParameterivOES 返回错误的大小

ios - 云 Firestore Swift : How to delete a query of documents

ios - UITableView:仅在编辑模式下显示选定的单元格背景

ios - 如何在给定特定行索引路径的情况下从 UICollectionView 获取所有单元格

uinavigationcontroller - 当 UINavigationController 以模态呈现时 UIBarButtonItems 移动位置