我有十个按钮,我需要知道用户选择了哪个按钮,并将该信息保存到用户个人资料

时间:2015-10-20 12:14:33

标签: arrays swift uibutton xcode7

好的,所以我一直试图解决这个问题多年来无济于事!

我有一个包含10个按钮的列表,用户选择其中一个按钮,我需要将该结果保存到我的用户配置文件中,该配置文件位于不同的View Controller上。我试图将按钮放在一个数组但是无法进行。任何帮助将不胜感激,我是swift和xcode的新手!

我尝试将它们添加到插座集合中,但它也没有用。

 var genreArray = ["rockGenreButton", "bluesGenreButton","funkGenreButton", "indieGenreButton", "metalGenreButton", "popGenreButton", "altGenreButton","electronicGenreButton", "countryGenreButton", "tradGenreButton"]

上面是我创建的数组我在接下来采取的步骤中丢失了如何调用数组的哪个[0]并保存到currentUser?

很抱歉,如果这是一个非常愚蠢的问题,但我无法在任何地方找到相关的答案!

2 个答案:

答案 0 :(得分:0)

您可以添加按钮标签并找到已点击的按钮。

enter image description here

为所有按钮(相同功能)创建插座后

    @IBAction func btnClick(sender: AnyObject) {
        print(sender.tag.description)

    }

只需按住每个按钮即可点击同一动作

获取按下按钮的标签

如果您需要更多解释,请与我们联系。

答案 1 :(得分:0)

使用视图的tag属性会激发软件中的懒惰/糟糕设计。它将数据存储在视图中。

不仅如此,但是其他任何开发人员(包括你自己在6个月内)如何知道if(btn.tag == 4)实际意味着什么?它隐藏了你正在做的事情的实际目的。

在更好的设计方法中做这样的事情的最简单方法之一是创建单独的功能。每个按钮一个。没有理由让所有按钮都运行相同的功能。

第一项改进是拥有buttonOnePressedbuttonTwoPressed等功能。

@IBAction func buttonOnePressed {
    // do something
}

再次,虽然你隐藏了你的应用程序的实际含义。

你可以给他们起名字......

@IBAction func rockGenreButtonTapped {
    // do something
}

@IBAction func bluesGenreButtonTapped {
    // do something
}

那好多了。我现在只是通过查看它运行时的函数来了解。

也许更好的方法是将函数命名为它实际要做的事情......

@IBAction func showRockGenreDetails {
    // present Rock Genre screen
}

@IBAction func showBluesGenreDetails {
    // present Blues Genre screen
}

这一次,我不仅知道这是一个动作(IBAction)我也只是通过阅读函数名称知道它将要做什么。

如评论中所述。您还可以使用UITableViewController来显示类型列表。这实际上是比我在这里展示的更好的方法,但更难以解释。