Latest 1.2
License MIT
Platforms ios 8.0, requires ARC

CocoaPods Platform
CocoaPods Version
CocoaPods License


class InterfaceController: WKInterfaceController {
    override func awakeWithContext(context: AnyObject?) {

        let menuItem = TDWatchInterfaceMenuItem(itemIcon: WKMenuItemIcon.Accept, title: NSLocalizedString("Accept", comment: ""), actionHandler: { (interfaceController, menuItem) -> Void in

        let menu = TDWatchInterfaceMenu(forInterfaceController: self)

Problem to Solve

WKInterfaceController has some methods to add and remove menu items.

func addMenuItemWithImage(image: UIImage, title: String, action: Selector)
func addMenuItemWithImageNamed(imageName: String, title: String, action: Selector)
func addMenuItemWithItemIcon(itemIcon: WKMenuItemIcon, title: String, action: Selector)
func clearAllMenuItems()

However, these methods require the WKInterfaceController object to be the one that handles the menu action. You cannot specify the target of the action.

TDWatchInterfaceMenu provides a way to add a menu item with a block as the action handler. More importantly, it decouples the menu item from the implementation of interface controller, makes it easier to reuse the menu item or, more commonly, the interface controller.


If you find a bug and know exactly how to fix it, please open a pull request.

If you can’t make the change yourself, please open an issue after making sure that one isn’t already logged.


The MIT license

Latest podspec

    "name": "TDWatchInterfaceMenu",
    "version": "1.2",
    "summary": "Add menu item with a block as it's action handler to `WKInterfaceController`",
    "homepage": "",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    "authors": {
        "YuAo": "[email protected]"
    "requires_arc": true,
    "platforms": {
        "ios": "8.0"
    "source_files": "TDWatchInterfaceMenu/*.{h,m}",
    "source": {
        "git": "",
        "tag": "1.2"

Pin It on Pinterest

Share This