【问题标题】:How to properly use NSPopUpButton如何正确使用 NSPopUpButton
【发布时间】:2018-02-12 17:46:41
【问题描述】:

我有一个 NSPopUpButton,我想用它来选择打开文件的文本编码。

我已经有了一些如何实现它的想法,但是当我开始学习 Objective-C 和 Cocoa 时,我几乎可以肯定有更好的方法来实现我想要的。

我需要一个带有编码名称和关联的 NSStringEncoding 值的 NSString。

我曾想过创建一个表示编码(名称和值)的类,并有一个带有这种类型对象的 NSArray,然后用数组的内容填充 NSPopUpButton,但我认为应该有更好的方法。

我对 NSDictionary 类不是很熟悉,但我怀疑这应该会让事情变得更容易。

有人可以给我一个提示吗?

【问题讨论】:

    标签: objective-c cocoa nsdictionary nspopupbutton nsstringencoding


    【解决方案1】:

    使用编码作为值和 NSPopUpButton 的名称作为键创建字典

    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
    NSNumber numberWithLong:NSASCIIStringEncoding], @"ASCII", 
    [NSNumber numberWithLong:NSUnicodeStringEncoding], @"Unicode", nil];
    

    然后将它们添加到 NSPopUpButton

    [myPopUpButton addItemsWithTitles:[dict allKeys]]
    

    然后获取用户选择的编码

    [dict objectForKey:[myPopUpButton titleOfSelectedItem]]
    

    注意:您需要将字符串编码枚举封装在一个对象中,例如 NSValue 或 NSNumber。

    【讨论】:

    • NSStringEncoding 值不是对象,所以我想我将不得不使用[NSNumber numberWithLong:NSASCIIStringEncoding] 作为dictionaryWithObjectsAndKeys 方法的对象。对吗?
    • 糟糕,是的,您需要将它们包装在 NSNumber 或 NSValue 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2012-07-12
    • 2013-01-21
    • 2021-10-24
    相关资源
    最近更新 更多