【问题标题】:How to pass data from one view controller to another view controller which is embedded in navigation controller如何将数据从一个视图控制器传递到另一个嵌入在导航控制器中的视图控制器
【发布时间】:2015-03-12 06:07:36
【问题描述】:

我能够将数据从一个视图控制器传递到另一个,但是当我在导航控制器中嵌入 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];

}

【问题讨论】:

  • 你能解释或提供你尝试过的例子吗?您最初是如何传递数据的?
  • 显示您的代码,我们不是心灵感应者,无法识别您的实施中的错误。

标签: ios uiviewcontroller uinavigationcontroller viewcontroller navigationcontroller


【解决方案1】:

假设你要传递一个字符串,你可以简单地通过以下步骤传递你的数据:-

1- 进入第二个视图控制器并获取一个 -- NSString *str;

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      如果您将 ViewController 与相同的 Navigation Controller 连接。您必须通过从 1st View 到 2nd View 的拖动执行 PUSH Segue 从 1st View 到 2nd View。单击其中的推送选项。您已经通过 this 设置了 Push Segue。

      通过单击 2 个视图之间的链接为标识符命名以进行 segue。

      现在你可以通过

      执行简单的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;
      

      【讨论】:

        猜你喜欢
        • 2017-09-02
        • 1970-01-01
        • 2016-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多