2014-02-20 23 views
2

我有按鈕點擊事件,目前AssetScreenPopupViewController,在AssetScreenPopupViewController我動態地將NSNumber添加到NSMutableArray(emailClkArray)
iOS - 從目前的視圖控制器返回數據

當我關閉視圖控制器,我在我的BrowseProgrammingTools中檢索這個emailClkArray。但我總是得到空白陣列

我的用於呈現modalviewcontroller代碼是

- (void)imageViewTapped:(UITapGestureRecognizer *)gr { 
    AssetScreenPopupViewController * assetController = 
    [[AssetScreenPopupViewController alloc]init]; 
    assetController.AssetContentArray = tableData_one; 
    assetController.myStringValue = gridPopUpController.assetName.text; 
    [self.navigationController presentViewController:assetController animated:NO 
     completion:nil]; 
    NSLog(@"Asset ARRAY %@",assetController.emailClkArray); 
    [self.navigationController.delegate self]; 
} 

的ModalViewController類方法,其中,我正在增值陣列是如下

- (IBAction)emailClkBtn:(id)sender { 
      [self.emailClkArray replaceObjectAtIndex:k withObject:[NSNumber numberWithInt:1]]; 
      [self.emailBtnOutlet setBackgroundImage:newImage1 forState:UIControlStateNormal]; 
      NSLog(@"WMA dhbc%@",self.emailClkArray); 
     } 

,當我駁回視圖控制器我已經分配emailClkArray到
ParentViewController像這樣的MutableArray

- (IBAction)dismissClk:(id)sender { 
    BrowseProgrammingTools *browsePrgTools = [[BrowseProgrammingTools alloc]init]; 
    browsePrgTools.emailClkArray = self.emailClkArray; 
    [self dismissViewControllerAnimated:NO completion:Nil]; 
} 

當我在BrowseProgrammingToolsviewDidAppear方法打印此陣這樣

-(void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:YES]; 
    self.emailClkArray = [[NSMutableArray alloc]init]; 
    NSLog(@"DNW%@",self.emailClkArray); 
} 

我越來越喜歡這個空白陣列

DNW(
) 

請幫我如何獲得價值?

+0

感謝您的幫助。 – nikk3008

回答

1

您誤解了控制流程。

當您致電presentViewController:animated:completion:時,呼叫立即返回。在視圖控制器甚至顯示到屏幕之前,您的下一行將執行。

您應該設置AssetScreenPopupViewController以擁有委託屬性。定義AssetScreenPopupViewController將用於與用戶完成選擇時調用它的視圖控制器進行通信的協議。

1

你的問題是在這裏:

- (IBAction)dismissClk:(id)sender { 
    BrowseProgrammingTools *browsePrgTools = [[BrowseProgrammingTools alloc]init]; 
    browsePrgTools.emailClkArray = self.emailClkArray; 
    [self dismissViewControllerAnimated:NO completion:Nil]; 
} 

你實例化一個新的視圖控制器,通過它一個數組,然後.....好了,然後什麼。當你關閉擁有它的VC時,該視圖控制器就會消失 - 這是你在下一行代碼中所做的。 BrowseProgrammingTools *browsePrgTools = [[BrowseProgrammingTools alloc]init];行不抓取呈現的VC,它創建它的一個新實例。

您可能會想要在您提交的VC中創建一些委託方法(查找@protocol),然後在設置導航控制器的委託後立即設置委託。然後,請不要撥打[self dismissViewControllerAnimated:NO completion:Nil];,以委託人執行的任何方法調用它。

相關問題