2014-09-28 67 views
-2

我想從SecondViewController.m調用方法addObjectToArray。 NSLog的工作原理,但我不能將「foo」添加到_myArray(一個NSMutableArray是UITableView的數據源)。如果我在viewDidLoad中調用[self addObjectToArray],那麼它工作正常。方法從另一個類調用時不工作

FirstViewController.m

-(void)addObjectToArray { 
    [_myArray addObject:@"foo"]; 
    [_myTableView reloadData]; 
    NSLog(@"it works"); 
} 

SecondViewController.m

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"identifier"]) { 
     FirstViewController *controller = [segue destinationViewController]; 
     [controller addObjectToArray]; 
    } 
} 
+1

您正在調用名爲myObject的FirstViewController實例上的方法addObjectToArray,但是您正在呈現firstViewController?我假設你正在使用故事板,所以你爲什麼使用新的初始化myObject? – 2014-09-28 21:15:36

+0

我應該如何初始化它? (我對Objective C很新穎) – user3578956 2014-09-28 21:17:35

+0

通過使用[self.storyboard instantiateViewControllerWithIdentifier:@「identifierNameHere」]; – 2014-09-28 21:18:13

回答

1

按Nofel馬哈茂德的評論,你創建的FirstViewController兩個獨立的情況下,一個名爲firstViewController(從故事板創建)和一個稱爲myObject(使用'new'方法創建)。然後您在myObject上調用addObjectToArray方法,但是您會呈現firstViewController。你的myObject本質上是多餘的。修改你的代碼如下:

-(IBAction) doSomething:(id)sender { 
FirstViewController *firstViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"firstViewController"]; 

[firstViewController addObjectToArray]; 

[self presentViewController:firstViewController animated:YES completion:nil]; 

}

編輯

既然你想回到FirstViewController現有實例,你需要使用一個展開SEGUE。有一個詳細的解釋一下:what-are-unwind-segues,但在你的情況:

在FirstViewController,添加一個新方法:

- (IBAction)unwindToFirst:(UIStoryboardSegue *)unwindSegue { 
    [self addObjectToArray]; 
} 

然後在你的故事板,從SecondViewController按Ctrl鍵(或者如果你願意,從視圖中的特定控件)添加到SecondViewController下面欄中綠色的「退出」圖標。您應該在出現的小彈出窗口中選擇unwindToFirst操作。

如果您想從代碼中使用此展開順序,請在故事板左側的「文檔大綱」中查找剛剛創建的展開討論。選擇此項,然後在右側的屬性檢查器中添加一個標識符。然後,您可以使用正常的[self performSequeWithIdentifier:...]方法從代碼中調用此segue。

+0

我已經完成了這項工作,但它仍然沒有向數組添加任何內容 – user3578956 2014-09-30 09:28:22

+0

addObjectToArray中的NSLog是否工作?如果是這樣,嘗試使用'NSLog(@「數組是%@」,_ myArray];'看看實際上在數組中。 – pbasdf 2014-09-30 09:42:23

+0

另外,在哪個FirstViewController方法中創建_myArray實例? – pbasdf 2014-09-30 09:44:07

相關問題