0

我是一名初级 iOS 开发人员,我想了解 NSMutableArray 的想法。具体来说,我想将 NSString 值从一个 VC 传递给属于另一个视图控制器的 NSMutableArray。我还希望 NSMutableArray 在其视图上填充 UITableView。任何想法如何做到这一点?例如,我有用户从第一个视图中触发的这个动作

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

我想将 NSString myBookString 的值传递给第二个视图中的 NSMutableArray 数组。任务相当简单,但我不太明白为什么不能将值传递给 NSMutableArray,而不是- (void)insertObject:(id)anObject atIndex:(NSUInteger)indexApple 参考文档中提到的这种方法。提前致谢!

编辑:我的观点是同时属于 UITabBar 和 UINavigationController 的不同 VC

4

2 回答 2

3

您需要两个控制器之间的通信。有几种解决方案。选择以下之一。我推荐代理。

来自http://www.hollance.com/

当你有两个对象 A 和 B,比如两个视图控制器,你想互相交谈时,你可以从以下选项中进行选择:

NS通知中心。

  • 这是匿名的一对多通信。对象 A 向 NSNotificationCenter 发布通知,然后将其分发给侦听该通知的任何其他对象,包括对象 B。A 和 B 不必相互了解任何信息,因此这是一种非常松散的耦合。也许有点太松了……</li>

KVO(键值观察)。

  • 一个对象观察另一个对象的属性。这是一个非常紧密的耦合,因为现在对象 B 可以直接窥视对象 A。KVO 的优点是对象 A 根本不需要意识到这一点,因此不需要发送任何通知—— KVO 机制在幕后处理这个问题。

直接指针。

  • 对象 A 有一个指向对象 B 的指针,并在感兴趣的事情发生时直接向它发送消息。这是可能的最紧密耦合,因为 A 和 B 不能在没有彼此的情况下运行。对于视图控制器,您通常希望避免这种情况。

代表们

  • 对象 B 是对象 A 的委托。在这种情况下,对象 A 对对象 B 一无所知。它只知道某个对象执行其委托的角色,它会愉快地向该委托发送消息,但它不知道知道——或者关心——这是对象 B。委托模式通常是在视图控制器之间进行通信的首选方式,但它需要一些工作来设置。

块。

  • 基本上与委托相同的方法,除了对象 B 现在给对象 A 一个或多个块(闭包)以在某些事件发生时执行。没有正式的委托协议,对象 A 看到的对象 B 的唯一内容就是它被赋予的块。
于 2012-07-26T20:11:17.560 回答
1

NSMutableArray 就是这样,一个标准的可变数组实现。它具有您期望从任何其他语言/框架中获得的所有功能。文档

向数组添加元素的方式有什么问题?[array addObject:object]如果您不介意将其添加到尾部,您也可以这样做。

要回答您的其余问题,有很多方法可以将数据从一个控制器传输到另一个控制器。您的导航是如何设置的?您使用的是 UITabBarController 还是 UINavigationController?这些观点如何相互关联?如果它们是嵌套的,您可以将数据直接从一个传递到另一个。如果没有,您可以使用类似于您的应用程序委托的东西来保存数据并传递它。

于 2012-07-26T20:04:10.960 回答