我有一个记分板应用程序,它有许多UITextFields,可以保存每轮比赛中每个玩家的分数。当点击文本字段时,我不想只使用键盘输入分数,而是想创建另一个viewController(popover或page curl模态segue会起作用)。这个第二视图控制器有一个特殊的计算器,玩家可以使用它来输入他们的分数。因此,基本上每个分数框都会触发对计算器视图的操作。一旦我在计算器视图上有了结果,我就想取消视图,并将刚刚计算的分数显示在导致分段发生的分数框中。(我想将特定的UILabel.text从第二个视图控制器传输回第一个视图控制器)。
在尝试了一系列方法之后,我觉得我必须了解代表。我正试图理解这个概念,看看这是否真的适用于我想要做的事情。似乎我必须以某种方式让我的UITextFields(分数框)"听"或"等待"计算器结果发生变化。这是正确的吗?我是不是把事情复杂化了?我是否需要了解代表才能使其发挥作用?
是的,你可以玩委派游戏,这样你就可以实现你想要的。你还可以使用"NSNotificationCenter"来监听特定的事件和调用方法或任何你想要的东西。
像这样:
添加观察员:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveTestNotification:)
name:@"TestNotification"
object:nil];
然后从你想喜欢的地方发布,你说从文本字段输入:
[[NSNotificationCenter defaultCenter]
postNotificationName:@"TestNotification"
object:self];
并以类似的方式接收
-(void) receiveTestNotification:(NSNotification *) notification
{
// [notification name] should always be @"TestNotification"
// unless you use this method for observation of other notifications
// as well.
if ([[notification name] isEqualToString:@"TestNotification"])
NSLog (@"Successfully received the test notification!");
}