簡體   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