2012-07-26 45 views
0

我是一名首發的iOS開發人員,我想獲得有關NSMutableArray的想法。 具體而言,我想從一個VC傳遞NSString值到NSMutableArray,屬於另一個視圖控制器。我也希望NSMutableArray在其視圖上填充UITableView。任何想法如何做到這一點? 例如,我有這樣的動作,該用戶從第一視圖將NSString從一個ViewController傳遞到其他的VC NSMutableArray

- (IBAction)addToFav:(id)sender { 
} 

內觸發器和欲的NSString myBookString的值傳遞到在第二視圖中的NSMutableArray陣列。 這個任務相當簡單,但我不明白爲什麼你不能在Apple的參考文檔中提到的- (void)insertObject:(id)anObject atIndex:(NSUInteger)index方法之外將值傳遞給NSMutableArray。 在此先感謝!

編輯:我的看法是在同一時間

+0

你能問一個更具體的問題嗎?關於NSArray和NSMutableArray的文檔非常好。基本上它們是其他對象的容器 - 你可以添加和刪除你喜歡的東西,並且可以相當自由地傳遞引用。 – ChrisH 2012-07-26 20:07:58

+0

我對一個問題有點類似的問題的回答可能會有所幫助:http://stackoverflow.com/questions/11595303/why-does-changing-a-mutable-array-contained-in-a-dictionary-not-require-updating/11595613#11595613 – ChrisH 2012-07-26 20:09:54

回答

3

您需要兩個控制器之間的通信。有幾種解決方案。選擇下列其中一項。我建議代表。

http://www.hollance.com/

當你有兩個對象A和B,說兩個視圖控制器,你想使搭腔,你可以從下面的選項中進行選擇:

NSNotificationCenter。

  • 這是匿名的一對多通信。對象A向NSNotificationCenter發佈通知,然後將通知分發給偵聽該通知的任何其他對象,包括對象B.A和B不必知道任何其他對象,因此這是非常鬆散的耦合。也許有點太寬鬆...

KVO(鍵值觀測)。

  • 一個對象觀察另一個對象的屬性。這是一個非常緊密的耦合,因爲對象B現在直接窺視對象A.KVO的優勢在於對象A不需要知道這一點,因此不需要發送任何東西通知 - KVO機制在幕後處理此事。

直接指針。

  • 對象A有一個指向對象B的指針,並在感興趣的事情發生時直接發送消息 。這是可能的最緊密的耦合 ,因爲A和B不能彼此沒有功能。在視圖控制器的 的情況下,您通常希望避免這種情況。

代表

  • 對象B是對象A的委託在這種情況下,對象A不 不知道對象B.任何東西它只是知道一些對象 執行其代表的作用並且它將愉快地將消息 發送給該代理,但它不知道 - 或者在意 - 這是對象 B.委託模式通常是在視圖控制器之間溝通 的首選方式,但需要一些工作來設置向上。

塊。

  • 本質上相同的方法的代表,所不同的是對象B現在 給對象A的一個或多個塊(封閉)時要執行時 某些事件發生。沒有正式的代表協議,並且對象A看到對象B的唯一的東西是它給出的 的塊。
+0

這不僅僅是那些。如果使用故事板以及IB鏈接,甚至綁定,則可以使用Segmentation透明地傳輸數據。然而,最終歸結爲偏好,而不是更多。 – 2012-07-26 20:22:36

1

的NSMutableArray屬於UITabBar和UINavigationController的不同的VC就是這樣,一個標準的可變數組的實現。它具有您在任何其他語言/框架中所期望的所有功能。 docs

將元素添加到數組的方式有什麼問題?如果您不介意將其添加到尾部,您也可以只執行[array addObject:object]

要回答您的問題的其餘部分,有許多方法可以將數據從一個控制器傳輸到另一個控制器。您的導航設置如何?你使用的是UITabBarController還是UINavigationController?觀點如何相互關聯?如果它們嵌套,則可以直接將數據從一個傳遞到另一個。如果沒有,您可以使用類似於您的應用代理的東西來保存數據並將其傳遞。

+0

看看我的編輯。我明白你在說什麼[數組addObject:對象],這聽起來很不錯。 – 2012-07-26 20:18:07

相關問題