@IBOutlet var items: [UIButton]
@IBAction func itemsHidden(sender: UIButton) {
sender.hidden = true
items.removeAtIndex(sender)
}
您好。
例如,我有一系列项目。
代码有错误:"无法调用' removeAtIndex'使用类型的参数列表(UIButton)"。 我需要做什么," removeAtIndex"作品?
...谢谢
答案 0 :(得分:4)
removeAtIndex
方法希望将索引作为参数。
如果要删除对象,请使用func removeObject(_ anObject: AnyObject)
修改强>
swift的数组中没有removeObject
(仅限于NSMutableArray
)。
要删除元素,您需要先找出它的索引:
if let index = find(items, sender) {
items.removeAtIndex(index)
}
答案 1 :(得分:0)
您没有告诉我们items
对象的类。
我认为它是一个数组。如果没有,请告诉我们。
正如Artem在他的回答中指出的那样,removeAtIndex采用整数索引并删除该索引处的对象。索引必须介于0和array.count-1
Swift Array对象没有removeObject(:)
方法,因为Arrays可以在多个索引中包含相同的条目。您可以使用NSArray方法indexOfObject(:)
来查找对象的第一个实例的索引,然后使用removeAtIndex。
如果你使用的是Swift 2,你可以使用indexOf(:)方法,传入一个闭包来检测同一个对象:
//First look for first occurrence of the button in the array.
//Use === to match the same object, since UIButton is not comparable
let indexOfButton = items.indexOf{$0 === sender}
//Use optional binding to unwrap the optional indexOfButton
if let indexOfButton = indexOfButton
{
items.removeAtIndex(indexOfButton)
}
else
{
print("The button was not in the array 'items'.");
}
(我仍然习惯于阅读包含选项和参考协议(如Generator)的Swift函数定义,因此上述语法可能并不完美。)