我正在尝试创建一个函数,该函数在从不同的viewcontrollers调用时创建一个动作表。 问题是虽然创建了uiaction表,但我似乎无法执行任何指定的点击操作。事实上,委托永远不会被调用。 单击任何按钮时,操作表将被取消。
我的功能代码是:
func shareAction(){
var sheet: UIActionSheet = UIActionSheet();
print("Calling share action!");
let title: String = "Tell friends, make plans";
sheet.title = title;
sheet.addButtonWithTitle("Cancel")
sheet.addButtonWithTitle("WhatsApp");
sheet.addButtonWithTitle("Facebook");
sheet.addButtonWithTitle("Message");
sheet.addButtonWithTitle("More");
sheet.cancelButtonIndex = 0;
sheet.delegate=self;
sheet.showInView(self.view)
}
func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int)
{
print("clicking the action sheet")
if(buttonIndex ==0){
print("this is 0")
}
这是一个扩展NSObject和UIActionSheetDelegate的类。 我已经阅读了所有文档,并对导致问题的原因感到难过。
答案 0 :(得分:1)
我有点同样的问题。问题是处理ActionSheet操作并且是委托的泛型类已被ARC取消分配。因此代理self
已被释放,并且不会被调用。
确保保留实现ActionSheet调用的类。例如,您可以将其保存到调用viewcontroller中的@property
变量中。
答案 1 :(得分:0)
创建你的函数就像它接受一个id类型的参数一样。您必须在其中传递当前的viewcontroller对象(self)。