• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 多次使用同一个 View Controller

[复制链接]
菜鸟教程小白 发表于 2022-12-13 07:59:15 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我是 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap