OStack程序员社区-中国程序员成长平台

标题: ios - 多次使用同一个 View Controller [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 07:59
标题: ios - 多次使用同一个 View Controller

我是 Objective-C 的新手,有一个问题。多次搜索,但我找不到我要找的东西。

我正在为这个应用程序使用 Storyboard。在主屏幕上,您有一些带有标签的按钮。这些标签应该说明一个数字。按下按钮时,您将转到一个新的 viewController,您已在其中输入(在“保存”之后)返回主屏幕并使用正确的数字更新标签。 一个按钮的所有功能都很棒,我对此感到非常高兴。

问题是:

1. 因为我有多个带有标签的按钮,所以我想使用同一个 viewController 来一遍又一遍地提供输入。我尝试连接每个按钮以在标识符“AddData”下滑动到 viewController,但 Xcode 不允许在 Storyboard 中使用相同的标识符两次或更多。所以我需要别的东西。有什么想法吗?

2.目前我使用以下代码将数据带回主屏幕:

homeScreenViewController

- (IBAction)unwindToHomeScreenUIStoryboardSegue *)segue;
{
    inputDataViewController *source = [segue sourceViewController];
    self.logoOneLabel.text = source.endTotalNumber;
}

输入数据 View Controller :

- (void)prepareForSegueUIStoryboardSegue *)segue senderid)sender
{
    if (sender != self.saveButton) {
        return;
    } else {
        if (endTotalLabelNumber > 0) {
            self.endTotalNumber = [NSString stringWithFormat"%.0f", totalLabelNumber + endTotalLabelNumber];
        } else if (endTotalLabelNumber == 0 && totalLabelNumber == 0){
            self.endTotalNumber = 0;
        } else {
            self.endTotalNumber = [NSString stringWithFormat"%.0f", totalLabelNumber + endTotalLabelNumber];
        }

    }
}

这对一个按钮很有效,但是如何与多个按钮一起使用呢?我听说 Delegates 多次使用同一个 viewController 并将数据返回到不同的地方,但我就是不明白。有什么帮助吗?



Best Answer-推荐答案


你不应该需要委托(delegate)。

您需要的是 View Controller 上处理输入的属性,它知道它正在为哪个按钮处理输入。

当您转到输入 Controller 时,根据按下的按钮设置此属性。当您放松时,获取此属性以了解要修改的标签。

例如,在输入 View Controller 的 .h 文件中,添加如下属性:

@property (nonatomic,assign) NSInteger handlingTag;

或者什么,任何对你有意义的名字。

现在您需要实现主屏幕 View Controller 的 prepareForSegue:sender:

使用 sender 参数来确定按下了哪个按钮,并在此基础上根据按钮设置输入 View Controller 的新 handlingTag 属性当我们放松时会知道如何处理它。

现在在 unwind 方法中:

switch (source.handlingTag)

根据源的handlingTag属性创建一个开关结构,并根据这个值设置合适的标签。


正如 Jeff 在评论中指出的那样,在这里定义一个 NS_ENUM 用于属性而不是 NSInteger 是一个非常好的主意。 NS_ENUM 将允许您命名正在使用的值。

关于ios - 多次使用同一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23979917/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4