1

players我在视图控制器中 有一个数组SearchViewController,并且还有许多其他视图控制器,它们具有文本字段,例如:textFieldOnetextFieldTwo.

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

4

2 回答 2

2

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

于 2013-07-31T17:27:12.563 回答
1

最简单的方法是使用 NSNotification 和 userInfo。

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

[[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];

试试看 !!

于 2013-08-01T11:32:07.557 回答