UIActionsheet委托clickedButtonAtIndex永远不会被调用

时间:2016-06-28 19:27:01

标签: ios swift ios7 uiactionsheet uiactionsheetdelegate

我正在尝试创建一个函数,该函数在从不同的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的类。 我已经阅读了所有文档,并对导致问题的原因感到难过。

2 个答案:

答案 0 :(得分:1)

我有点同样的问题。问题是处理ActionSheet操作并且是委托的泛型类已被ARC取消分配。因此代理self已被释放,并且不会被调用。

确保保留实现ActionSheet调用的类。例如,您可以将其保存到调用viewcontroller中的@property变量中。

答案 1 :(得分:0)

创建你的函数就像它接受一个id类型的参数一样。您必须在其中传递当前的viewcontroller对象(self)。