我有一个简单的主 - 详细信息应用程序,我试图在一个视图控制器之间传递数据到下一个。我有一个视图控制器作为模态视图控制器呈现,用户从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];
}
答案 0 :(得分:1)
问题是您没有在主实例上设置字符串,而是在刚刚为该场合初始化的其他实例上设置字符串。
您可以通过多种方式实现这一目标。取决于您应用程序的所有体系结构
最简单但不是很好的方法是在主人中创建详细的View Controller时执行此操作
DetailVC *dVC = [[DetailVC alloc] initWithNib:@"DetailVC" bundle:nil];
dVC.masterReference = self;
然后在您的详细视图控制器中,您可以直接引用它:self.masterRefence
,这将指向您的original
主视图控制器。
答案 1 :(得分:0)
您是否已将.h文件导入编码页面?
答案 2 :(得分:0)
我认为在视图控制器之间传递数据的最佳方式是通过Core Data。你应该研究这个功能在ios中是如何工作的,从长远来看它会对你有帮助。