1

完全に標準の NSComboBox があります。コンテンツをフィードするデータ ソースがセットアップされており、正常に動作します。問題は、ユーザーがリストをクリックしてリストを表示すると、リストの一番上ではなく一番下までスクロールし始めることです。見つけた

- (void)scrollItemAtIndexToTop:(NSInteger)index

入れてみました

[comboBox scrollItemAtIndexToTop:0];

色々なところにあるけど何もしない。これは、何よりも理解できないことが面倒です。

前もって感謝します。

編集: データ ソースからのコード:

- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox
{
    return [[engineTypesArrayController arrangedObjects] count];
}

- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index
{
    return [[[engineTypesArrayController arrangedObjects] objectAtIndex:index] valueForKey:@"title"];
}


- (NSString *)comboBoxCell:(NSComboBoxCell *)aComboBoxCell completedString:(NSString *)uncompletedString
{
    NSArray *matchingObjects = [[engineTypesArrayController arrangedObjects] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(logTenCustomizationProperty_title BEGINSWITH[c] %@)", uncompletedString]];

    if (matchingObjects && ([matchingObjects count] > 0))
    {
        return [[matchingObjects objectAtIndex:0] valueForKey:@"title"];
    }
    else
    {
        return nil;
    }
}

omboBox:indexOfItemWithStringValue は実装されていません。

4

1 に答える 1

1

このデリゲート メソッドを追加すると、次のように機能します。

#pragma mark - ComboBox delegate
- (void)comboBoxWillPopUp:(NSNotification *)notification
{
    NSComboBox *comboBox = [notification object];

    [comboBox scrollItemAtIndexToVisible:0];
}
于 2012-07-24T18:35:38.037 に答える