【问题标题】:How to pass data between NavigationController and Table View Controller with prepareForSegue如何使用 prepareForSegue 在 NavigationController 和 Table View Controller 之间传递数据
【发布时间】:2014-09-23 10:40:37
【问题描述】:

如何在导航控制器和表格视图控制器之间传递数据?我尝试过 prepareForSegue 方法,但它不起作用。我尝试设置断点以查看流程是否调用此方法,但似乎我的 Navigation Controller 类的 prepareForSegue 从未被调用。这是一些代码示例:

NavController.h:

@interface NavController : UINavigationController

@end

NavController.m:

- (void) prepareForSegue: (UIStoryboardSegue *) segue sender: (id) sender
{
    TableViewController *destViewController = (TableViewController*)segue.destinationViewController;
    destViewController.title = @"Home";
    destViewController.URLValue = @"http://www.example.com";
}

TableViewController.h:

@interface TableViewController : UITableViewController 

@property (nonatomic, strong) NSString *URLValue;

@end

【问题讨论】:

  • 你的 segue 是如何定义的,特别是它来自你的 UI 设计中的什么对象?
  • 我的segue来自NavController,目的地是TableViewController。 NavController 和 TableViewController 之间的链接是“根视图控制器”
  • 据我所知,这不是一个转场。它被定义为“关系”,并且在界面生成器中没有 segue 属性。

标签: ios objective-c uiviewcontroller storyboard xcode5


【解决方案1】:

听起来导航控制器是您的根视图控制器(即,如果您选择导航控制器场景并在 Xcode 中检查其详细信息,则应选中“初始场景”复选框)。因为它是初始场景并且仅以一种方式到达,请尝试在 TableViewController 上的 viewDidLoad: 中设置默认值。

【讨论】:

  • 嗨,我考虑过使用viewDidLoad:,但它不适用于应用程序的其余部分。最后我解决了我的问题:UINavigationController *navController = [segue destinationViewController]; TableViewController *destViewController = (TableViewController *)([navController viewControllers][0]); destViewController.title = @"Home"; destViewController.URLValue = @"http://www.example.com";
猜你喜欢
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多