我在视图控制器players
中有一个数组SearchViewController
,而且我还有许多其他视图控制器,它们包含文本字段,例如:textFieldOne
和{{1} }。
如何从textFieldTwo
以外的视图控制器中将textFieldOne
中的文本插入players
数组?
答案 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];
尝试!!