繁体   English   中英

如何将数据从一个视图控制器传递到导航控制器中嵌入的另一个视图控制器

[英]How to pass data from one view controller to another view controller which is embedded in navigation controller

我能够将数据从一个视图控制器传递给另一个视图控制器,但是当我将viewpapersViewController嵌入导航控制器时,数据没有传递,我想在按下按钮时将数据传递给第二个视图控制器

最初在按下按钮时发送请求,然后在connectionDidFinishLoading中

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

  // NSLog(@"Finish Loading");
NSError *myError = nil;
NSDictionary *res = [NSJSONSerialization JSONObjectWithData:self->_responseData options:NSJSONReadingMutableLeaves error:&myError];


Papers *papersViewController =
[self.storyboard instantiateViewControllerWithIdentifier:@"Papers"];
papers = [[NSMutableArray alloc]init];
urls=[[NSMutableArray alloc]init];
for(id key in res) {

    NSString* name = [key objectForKey:@"name"];
    NSString* url =[key objectForKey:@"url"];

    [papers addObject:name];
    [urls addObject:url];

}

viewpapersViewController.exam = exam;
viewpapersViewController.papersName=papers;
viewpapersViewController.urls=urls;

[self presentViewController:viewpapersViewController animated:YES completion:Nil];

}

假设您要传递字符串,则可以通过以下步骤简单地传递数据:

1-继续第二个视图控制器,并采取-NSString * str;

2-当您按下第一个视图控制器中的按钮时,直接传递数据
像:-secondClassObject.str = FirstClassString。 3-然后简单地推动您的导航。

通常,我们将通过两种方式传递数据:

  1. 我们只是实例化目标UIViewController ,然后将数据传递给它的属性。
  2. 我们使用的另一种方法是segue。 本质上,第一种方法是相同的。

对于您的问题,我能想到的是您没有正确使用UIViewController 您可能可以尝试首先获取UINavigationController 然后,使用此属性访问顶部的UIViewController: topViewController

如果您已将ViewController与相同的Navigation Controller连接。 您必须已通过从1st视图拖到2nd视图执行了从1st视图到2nd视图的PUSH Segue。 在其中单击“推送”选项。 您已经以此建立了Push Segue。

单击2个视图之间的链接给标识符命名以进行筛选。

现在,您可以通过以下方式执行简单的Segue

[self performSegueWithIdentifier:@"identifier for segue" sender:self];

现在处于第一视图

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([[segue identifier] isEqualToString:@"identifier segue"]){
    // Get the new view controller using [segue destinationViewController].
    2nd View *vc = [segue destinationViewController];
    2nd vc.variableName  = YES;
}}

在界面文件的第二视图中添加属性

@property variable *variableName;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM