2016-12-06 89 views
1

我有5个按钮代表城市,我已经通过Attribute Inspector分配给他们tags如下,CityA as 0,.......CityE as 4如何将按钮标签存储在变量中?

有没有一种方法,我可以将这些标记存储到一个变量cityTag并确保如果在保存按没有按钮的,我可以发送消息"Please select a city"

我创建了多个按钮的action,但我不知道如何创建一个variable并将它分配给tags

+0

你可以使用'NSDictionary'。 – ColdSteel

回答

1

由于您是通过属性检查器添加标签,您可以通过sender.tag属性访问轻击按钮的标签!

最初创建NSMutableArray(将保存按下所有按钮的标签),但显然会在一开始空!您可以使用IBAction中的sender.tag属性访问该标签。如果您在尝试保存时NSMutableArray未包含标签,则可以显示警报。

0

初始化citytag = -1。更改citytag的价值,当你按下一个按钮,像citytag = sender.tag并保持如果citytag == -1支票,然后将消息发送please select a city其他selected city is ###

2

为了更好的可读性的代码yourcould定义为代表的名称和标记,以及这种情况下的Enum

例如:

enum City: Int { 
    case .cityA, 
    case .cityB, 
    case .cityC 
} 

您可以将它们存储在一个Array

var cities: [City] = [] 

要设置城市:

if let cityA: City = City(rawValue: button.tag) { 
    cities.append(cityA) 
} 

要读取Int值:

let rawValue: Int = cityA.rawValue 
+0

我试图存储标签值model.Can城市变量的值被存储在核心数据的整数类型的属性。 – leaner122

+0

你可以有从类型'NSNumber'持有的原始值的私人财产,写上你'CoreData'模型的扩展,通过自己的getter和setter该值到'City'枚举映射。 –

0

你可以试试这个:

func checkbuttons -> BOOL { 

    var countBtn = 0 

    for view in self.view.subviews as [UIView] 
    { 
     if let btn = view as? UIButton 
     { 
     if btn.isSelected 
     { 
      countBtn = countBtn + 1 
     } 
     } 
    } 
    if(countBtn > 0) 
    { 
     return true 
    } 
    else 
    { 
     return false 
    } 
} 

在返回的基础上,你就会知道按钮选择或不。 希望它能帮助你

相关问题