如何从单独的视图控制器添加到数组

时间:2013-07-31 17:17:06

标签: ios arrays cocoa-touch

我在视图控制器players中有一个数组SearchViewController,而且我还有许多其他视图控制器,它们包含文本字段,例如:textFieldOne和{{1} }。

如何从textFieldTwo以外的视图控制器中将textFieldOne中的文本插入players数组?

2 个答案:

答案 0 :(得分:2)

你通过在SearchViewController中使用player数组来违反MVC设计模式,你可以看到这会让你的生活变得复杂。如果你遵循这个模式,你就可以将你的玩家阵列放在一个单独的模型类中。您应该创建此类的实例,然后将其传递给需要与之交互的各种视图控制器。如果在模型属性上使用键值观察(KVO),则当其中一个视图控制器更改时,可以通知所有视图控制器。因此,如果视图控制器A添加了新的播放器,视图控制器B可以更新其播放器名称的表视图列表,例如。

答案 1 :(得分:1)

执行此操作的最简单方法是使用带有userInfo的NSNotification。

视图控制器中添加观察者,需要进行更新。

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(updateArray:) name:@"updateArray" object:nil];

编写方法,

-(void)updateArray:(NSNotification*)notif
{
[[NSNotificationCenter defaultCenter]removeObserver:self name:@"updateArray" object:nil];

    NSDictionary *dictionary = [notif userInfo];
    [self.arrPlayers addObject:dictionary];
}

然后,在任何地方发布通知,需要从 - >

调用更新
    NSString *notificationName = @"updateArray";
    NSString *key = txtField.text;
    NSDictionary *dictionary = [NSDictionary dictionaryWithObject:orientation forKey:key];
    
[[NSNotificationCenter defaultCenter] postNotificationName:notificationName object:nil userInfo:dictionary];

尝试!!