默认情况下,NSComboBox列表滚动到底部

时间:2012-07-13 20:41:56

标签: cocoa scroll nscombobox

我有一个完全标准的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;
    }
}

comboBox:indexOfItemWithStringValue未实现。

1 个答案:

答案 0 :(得分:1)

添加此委托方法有效:

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

    [comboBox scrollItemAtIndexToVisible:0];
}