2012-11-12 77 views
0
BookingDocumentsViewController *bdVc = [self.storyboard instantiateViewControllerWithIdentifier:@"BookingDocs"]; 
    bdVc.orId = rl_id; 
    bdVc.docsArray = self.documentsArray; 
    [self.navigationController pushViewController:bdVc animated:YES]; 

我有上面的代碼片段。我試圖加載新的視圖 - 控制和可變數組(docsArray)對象分配給當前視圖的mutableArray(documentsArray < =這不是零)ViewControllers之間傳遞MutableArray

每當我執行上面的代碼中,我得到EXC_BAD_ACCESS錯誤。

,但如果我評論3號線。它的工作原理,但我不能讓我的陣列到新的視圖。我甚至嘗試與[[NSMutableArray alloc] initWithArray:self.documentsArray];這也不工作。

但是,如果使用bdVc.docsArray =[[[NSMutableArray alloc] init];它的工作原理,但我又不能讓我的可變數組新的觀點。

編輯: 但是2號線有NSString的值。他們可以通過沒有問題。

我在這裏做錯了什麼?

我沒有得到在控制檯的任何錯誤,而不是我得到這個。

enter image description here

+0

後崩潰的堆棧跟蹤。 – trojanfoe

+1

你在做bdVc的viewDidLoad或viewWillAppear/viewDidAppear中的docsArray嗎? docsArray是一個強大的財產? – NikosM

+0

是的docsArray是一個強大的財產。而且我沒有在docsArray中做任何其他事情。 – sleepwalkerfx

回答

0

我想我找到了問題。一個非常基本的錯誤。在bdVc的viewDidLoad我有以下線,

NSLog(@"Booking Documents viewDidLoad : %@",self.docsArray.count);

這是造成錯誤。 %@而不是%d。我想知道爲什麼xcode沒有顯示錯誤的正確理由。

謝謝大家的幫助。 :)

0
在BookingDocumentsViewController.h

@property(nonatomic, retain)NSmutableArray *docsArray; 

你儘可以在你的BookingDocumentsViewController.m做:

@synthesize docsArray; 

- (void)viewDidLoad 
{ 
    NSmutableArray *array = [NSmutableArray alloc]initWithArray:docsArray]; 
    [super viewDidLoad]; 
} 

然後當你推圖

BookingDocumentsViewController *bdVc = [self.storyboard instantiateViewControllerWithIdentifier:@"BookingDocs"]; 
bdVc.orId = rl_id; 
bdVc.docsArray = self.documentsArray; 
[self.navigationController pushViewController:bdVc animated:YES]; 
[bdVc Release]; 
+1

在viewDidLoad中創建一個不在任何地方使用的本地數組有什麼意義?這個地方沒有太多的答案 – Abizern

+0

以及你可以定義該數組。h如果你想在其他區塊使用它,我只是將重點放在傳遞數組價值的基礎上......無論如何將在未來照顧。 – spider1983

2

也許考慮使用Segue。它爲你實例化目標視圖控制器。然後在您的源視圖控制器實現

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

到達目的地的ViewController參考,並設置其數據。

BookingDocumentsViewController *bdVc = [segue destinationViewController]; 
bdVc.docsArray = self.documentsArray; 
相關問題