我必须使用委托将信息传输回mainViewController吗



我有一个记分板应用程序,它有许多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!");
}

最新更新