iphone - 将 NSString 从一个 ViewController 传递到另一个 VC NSMutableArray

标签 iphone objective-c ios xcode nsmutablearray

我是 iOS 开发新手,我想了解 NSMutableArray。 具体来说,我想将 NSString 值从一个 VC 传递给属于另一个 View Controller 的 NSMutableArray。我还希望 NSMutableArray 在其 View 上填充 UITableView。任何想法如何做到这一点? 例如,我有用户从第一个 View 中触发的此操作

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

我想将 NSString myBookString 的值传递给第二个 View 中的 NSMutableArray 数组。 这个任务相当简单,但我不太明白为什么你不能在提到的 - (void)insertObject:(id)anObject atIndex:(NSUInteger)index 方法之外将值传递给 NSMutableArray在 Apple 的引用文档中。 提前致谢!

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

最佳答案

您需要在两个 Controller 之间进行通信。有几种解决方案。选择以下之一。我推荐委托(delegate)。

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

当你有两个对象 A 和 B,比如两个 View Controller ,你想互相交谈时,你可以从以下选项中选择:

NSNotificationCenter。

  • 这是匿名的一对多通信。对象 A 向 NSNotificationCenter 发布一个通知,然后将它分发给任何其他监听该通知的对象,包括对象 B。A 和 B 不需要知道彼此的任何信息,所以这是一个非常松散的耦合。也许有点太松了……

KVO(键值观察)。

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

直接指针。

  • 对象A有一个指向对象B的指针并直接向它发送消息 当有趣的事情发生时。这是最紧密的耦合 可能是因为 A 和 B 没有彼此就无法运作。在里面 对于 View Controller ,您通常希望避免这种情况。

代表

  • 对象 B 是对象 A 的委托(delegate)。在这种情况下,对象 A 做 对对象 B 一无所知。它只知道某个对象 执行其委托(delegate)的角色,它会愉快地发送消息 给那个委托(delegate),但它不知道——也不关心——这是对象 B.委托(delegate)模式通常是首选的通信方式 之间的 View Controller ,但它需要一些工作来设置。

block 。

  • 基本上与委托(delegate)相同的方法,除了对象 B 现在 给对象 A 一个或多个 block (闭包)来执行时 某些事件发生。没有正式的委托(delegate)协议(protocol),并且 对象 A 唯一能看到对象 B 的是它所在的 block 给。

关于iphone - 将 NSString 从一个 ViewController 传递到另一个 VC NSMutableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11677085/

相关文章:

iphone - sqlite_step(语句)中的 EXC_BAD_ACCESS

iphone - 杀死越狱的iPhone(iOS X)的Kill Command

iphone - 如何添加pull tableview up来刷新uitableview里面的数据

iphone - awakeFromNib 不是调用而是显示 xib

iPhone : How to manage 130 images in ImageView?

ios - iOS 上的 VLCKit 在播放流媒体时没有 fps

c++ - 为什么通过引用传递 self 会导致错误的访问错误?

objective-c - 如何不解析 NSOpenPanel 中的符号链接(symbolic link)?

ios - 创建一个非矩形的uiview

用于快节奏游戏的 iOS 滑动手势识别器