1

我的应用程序使用-validateMenuItem:验证菜单项的方法。但是我需要根据弹出窗口中的内容来验证不同的菜单项。

我希望找到一种方法来获取弹出窗口的标签,但是在查看了文档后,我似乎找不到方法……有什么想法吗?

编辑: 我认为这需要更多上下文...我的模型对象是 JDBCSyncer(将一个数据库与另一个同步),我的窗口是一个设置,我需要根据它们的标题是否在数组中来验证我的菜单项表示表中各个字段的字符串。这个想法是您从弹出窗口中选择字段。

4

2 回答 2

3

我没有一个很好的答案,但是这些方面的东西怎么样:

- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
{
    NSMenu *menu = [menuItem menu];
    if (menu == [popUpButton1 menu]) {
        return YES;
    }
    else if (menu == [popUpButton2 menu]) {
        return NO;
    }
    else (menu == [popUpButton3 menu]) {
        return YES;
    }
    else {
        return NO;
    }
}
于 2010-01-31T23:22:25.103 回答
0

如果这些弹出按钮中的菜单项非常不相关,以至于您需要将一个弹出按钮与另一个按钮区分开来,那么也许您应该为它们创建单独的控制器对象。每个控制器将是其弹出按钮的菜单项的目标(因此也是验证器),并且只有那个/那些弹出按钮。

如果对相关项目有意义,这些控制器中的一些或全部也可以提供表视图或集合视图。

这也使您可以标记菜单项以便于识别,而不必担心标签冲突(两个或多个不相关的 UI 元素中使用相同的标签),因为每个控制器只会看到它知道的标签。类似地,如果控制器使用表示对象(如果它动态填充其弹出按钮,则最有可能),它不必担心看到它无法识别的表示对象。

于 2010-02-01T05:28:36.363 回答