how to enable/disable NSToolbarItem

前端 未结 4 998
陌清茗
陌清茗 2021-01-04 13:39

I have a project that needs to disable/enable some NSToolbarItems depends on different options. I checked and found no parameter for this.

Is there a wa

相关标签:
4条回答
  • 2021-01-04 14:11

    Implement NSToolbarItemValidation Protocol in your window, view or document controller. The documentation gives the following sample code:

    -(BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem {
    
        BOOL enable = NO;
        if ([[toolbarItem itemIdentifier] isEqual:SaveDocToolbarItemIdentifier]) {
    
            // We will return YES (enable the save item)
            // only when the document is dirty and needs saving
            enable = [self isDocumentEdited];
    
        } else if ([[toolbarItem itemIdentifier] isEqual:NSToolbarPrintItemIdentifier]) {
    
            // always enable print for this window
            enable = YES;
        }
        return enable;
    }
    

    You can also use action or tag to determine what toolbar item is being validated. Items are validated frequently, whenever your app is activated or events are dispatched, so they will always be in a valid state.

    0 讨论(0)
  • 2021-01-04 14:13

    As nsij22 said you need to set action.

    In Storyboard just ctrl+drag from toolbar item to your code action.

    0 讨论(0)
  • 2021-01-04 14:15

    There is an easier solution :

    -(BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem
    {
    
        return [toolbarItem isEnabled] ;
    }
    

    that way you can use [yourToolBarItem setEnabled:YES/NO] ; in your code.

    0 讨论(0)
  • 2021-01-04 14:15

    an easy way to do this in swift, or you could port this to objective c is to just set actions

    This Disables the item

    Mytoolbar.action = nil
    

    This reEnables it

    Mytoolbar.action = "Name of a function"
    

    In doing this you would want to replace your IBAction with function so

    @IBAction func blehbleh(sender: AnyObject){ Stuff }
    

    would be changed to

    func blehbleh(){ Stuff }
    
    0 讨论(0)
提交回复
热议问题