2012-07-26 41 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

相关问题