让我们假设您在Swift中为iOS构建了一个计算器。当用户点击操作(除法,加法,减法等)时,我想避免使用单独的方法来处理每个操作。
相反,我希望有一个工厂,根据发件人,确定要使用的正确OperationType
子类(减法,乘法等)
我的问题是:将信息直接存储在Xcode中的UI按钮上是否正确?例如,在Addition
按钮(+
)上,如果我用Addition
标记它,我就可以使用该信息加载Addition
类。
类似地,对于每个数字,我宁愿有一个函数来处理用户推送任何数字。但是,要确定发件人,使用sender.title
似乎有点草率,因为它将数字的可视标题绑定到代码。是否适合提供tags
来处理这个问题,还是有其他系统来处理这个问题?
答案 0 :(得分:2)
你当然可以做到这一点,有时它会带来干净的设计。视图对象具有标记属性(Int。)您可以在操作方法上放置一个switch语句来打开标记值。通常,您应该使用从1或更大的标记值开始,因为0是默认标记值。
如果需要超过整数值,可以将值保存到使用标记值索引的数组中,也可以使用关联存储实际存储附加到按钮的对象。搜索" Cocoa相关对象"有关该技术的更多信息。或者你可以看看我放在github上的一个演示项目:https://github.com/DuncanMC/AssocitiveStorageDemo(用Objective-C编写,但Swift中的技术是相同的)
答案 1 :(得分:1)
function remove_item_from_cart(product){
var data = {
"action" : "remove_from_cart",
"product_id" : product,
};
jQuery.post(WC_VARIATION_ADD_TO_CART.ajax_url, data, function(response) {
$(document.body).trigger("update_checkout");
});
}
答案 2 :(得分:0)
您可以使用标记属性
func buttonClicked(sender:AnyObject) {
let button = sender as! UIButton
if button.tag == 0 {
...
}
else if button.tag == 1 {
...
}
}