试图在两个视图控制器之间传递数据

Posted

技术标签:

【中文标题】试图在两个视图控制器之间传递数据【英文标题】:Trying to pass data between two view controllers 【发布时间】:2012-12-13 23:36:58 【问题描述】:

我有一个简单的主从应用程序,我试图在一个视图控制器之间传递数据到下一个。我有一个视图控制器,它显示为模态视图控制器,用户从UIPickerView 中选择一个选项,并根据他们选择的行,设置字符串。但是,当视图控制器为dismissed 时,该字符串为空。当用户在模态视图控制器上选择登录按钮时,它会向主视图控制器发布通知,以使用UIPickerView 设置的字符串启动方法,但是由于字符串为空,它一直失败。我已将 parserURL 设置为每个视图控制器以及 ivars 中的属性。

这是在模态视图控制器中设置字符串的代码:

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 

    MasterViewController *master = [[MasterViewController alloc] init];

    if (row == 0) 
        [self.dropdownButton setImage:[UIImage imageNamed:@"dropdown"] forState:UIControlStateNormal];
    
    if (row == 1) 
        [self.dropdownButton setImage:[UIImage imageNamed:@"hbm"] forState:UIControlStateNormal];
        [master setParserURL:@"http://98.246.50.81/firecom/xml/HBM.xml"];
        NSLog(@"URL = %@", master.parserURL);
    
    if (row == 2) 
        [self.dropdownButton setImage:[UIImage imageNamed:@"hwh"] forState:UIControlStateNormal];
        [master setParserURL:@"http://98.246.50.81/firecom/xml/HWH.xml"];
    

登录按钮 IBAction:

-(IBAction)loginButton:(id)sender 

    [self dismissViewControllerAnimated:YES completion:nil];
    [[NSNotificationCenter defaultCenter] postNotificationName: @"login" object: nil];


【问题讨论】:

【参考方案1】:

问题是您没有在您的主实例上设置字符串,而是在您刚刚为该场合初始化的另一个实例上设置字符串。


有很多方法可以实现这一目标。取决于您的应用程序的整体架构。 最简单但不是很好的方法是在您的 master 中创建详细视图控制器时执行此操作DetailVC *dVC = [[DetailVC alloc] initWithNib:@"DetailVC" bundle:nil]; dVC.masterReference = self;

然后在您的详细视图控制器中,您可以像这样直接引用它:self.masterRefence,这将指向您的 original 主视图控制器。

【讨论】:

如何在我的主实例上设置它?【参考方案2】:

你把.h文件导入到编码页面了吗?

【讨论】:

【参考方案3】:

我相信在视图控制器之间传递数据的最佳方式是通过 Core Data。你应该研究一下这个功能在 ios 中是如何工作的,从长远来看它会对你有所帮助。

【讨论】:

以上是关于试图在两个视图控制器之间传递数据的主要内容,如果未能解决你的问题,请参考以下文章

在视图控制器之间传递多个标签时遇到问题

如何在由 UITabBarController 分隔的两个视图控制器之间传递数据?

如何在视图控制器之间传递数据 - 不起作用

如何在两个由UITabBarController分隔的视图控制器之间传递数据?

在视图控制器之间传递数据 - iOS Xcode - 啥是好方法?

如何在两个视图控制器之间的快速应用程序中传递 json 数据