簡體   English   中英

Swift-動態添加的動作不會觸發

[英]Swift - Dynamically added action doesn't fire

我有一個功能,可以通過在2張圖像之間切換來“切換”條形按鈕項目。

class Buttons {
    func ToggleBarButton(button : UIBarButtonItem, name : String, location : BarButtonLocation, isEnabled : Bool, viewController : UIViewController) {
        var iconName = name
        if (!isEnabled) {
            iconName += "EnabledIcon"
        } else {
            iconName += "DisabledIcon"
        }

        let newIcon = UIImage(named: iconName)
        let newButton = UIBarButtonItem(image: newIcon, style: .Plain, target: self, action: button.action);

        switch location {
        case BarButtonLocation.Left:
            viewController.navigationItem.leftBarButtonItem = newButton;
            viewController.navigationItem.leftBarButtonItem?.tintColor = UIColor.blackColor();
        case BarButtonLocation.SecondLeft:
            viewController.navigationItem.leftBarButtonItems?[1] = newButton
            viewController.navigationItem.leftBarButtonItems?[1].tintColor = UIColor.blackColor()
        default:
            return;
        }
    }
}

我也有一個視圖控制器類,其中有條形按鈕項的動作。

class GradesViewController: UIViewController {
    var isFilterEnabled = false
    var isViewEnabled = false

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    @IBAction func filterButton_Pressed(sender: UIBarButtonItem) {
        Buttons().ToggleBarButton(sender, name : "Filter", location: BarButtonLocation.Left, isEnabled: isFilterEnabled, viewController: self);
        isFilterEnabled = !isFilterEnabled;
    }

    @IBAction func viewButton_Pressed(sender: UIBarButtonItem) {
        Buttons().ToggleBarButton(sender, name : "View", location: BarButtonLocation.SecondLeft, isEnabled: isViewEnabled, viewController: self);
        isViewEnabled = !isViewEnabled;
    }
}

第一次按下時,它成功地將圖像更改為啟用的形式,但是在第二次按下時,它不執行任何操作(press事件甚至不觸發)。 我檢查了一下,並將button.action正確標識為"filterButton_Pressed:" 有什么問題,或者有更簡單的方法來做到這一點? 預先感謝您的回答。

在每種情況后放置break語句,然后嘗試。 並刪除半冒號。

我只是意識到問題是我將代碼從視圖控制器復制到按鈕類,並且沒有將target: self更改為target: viewController 但是仍然感謝所有答案...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM