Удалить серый UITableView указатель - PullRequest
4 голосов
/ 06 июля 2010

Я делаю приложение с UITableView, у которого есть несколько разделов (2), и когда я запускаю, табличное представление имеет эту раздражающую серую полосу указателя сбоку, как в приложении «iPod», которое имеет но 2 варианта в нем. У меня вопрос, как мне скрыть «полосу индекса», потому что это лишняя трата пространства?

Пример:
http://img824.imageshack.us/img824/7278/grayscrollbar.png

Фрагменты кода:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [sections count];
}

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
    return sections;
}

// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (section == 0) {
        return 2;
    }
    return 1;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    return [sections objectAtIndex:section];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell.
    cell.textLabel.text = [content objectAtIndex:(indexPath.row + [[sectionAmounts objectAtIndex:indexPath.section] intValue])];
    tableView.showsVerticalScrollIndicator = NO;
    return cell;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    content = [NSArray arrayWithObjects:@"Sphere", @"Cylinder", @"Circle", nil];
    sections = [NSArray arrayWithObjects:@"3d", @"2d", nil];
    sectionAmounts = [NSArray arrayWithObjects:[NSNumber numberWithInt:0], [NSNumber numberWithInt:2], nil]; //Second number is objects in first section... odd huh?
    self.tableView.showsVerticalScrollIndicator = NO;
    [content retain];
    [sections retain];
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

(помните мои странные комментарии ...)

HiGuy

Ответы [ 5 ]

15 голосов
/ 16 ноября 2011

Я попробовал это, и у меня это не сработало.поэтому я просмотрел свойства табличного представления и получил это.

self.tableView.showsVerticalScrollIndicator = NO;

работает как шарм.

* для любого, кто хочет сделать это в будущем.

14 голосов
/ 09 июля 2010

Эта «полоса прокрутки» - ваша указательная полоса, если вы говорите о гигантской серой штуке.

Верните nil из sectionIndexTitlesForTableView: и оно исчезнет.

0 голосов
/ 07 января 2016

Используйте sectionIndexBackgroundColor свойство UITableView, чтобы установить цвет полосы индекса, чтобы очистить цвет, так как скрытая полоса прокрутки также будет скрывать индексы.

Добавьте его к viewDidLoad: следующим образом:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.tableView.sectionIndexBackgroundColor = [UIColor clearColor]; //Replace it with your desired color
}
0 голосов
/ 19 декабря 2013

Вы просто используете приведенный ниже код, и серая полоса будет ....

    tableViewBrowse.sectionIndexTrackingBackgroundColor = [UIColor clearColor];
0 голосов
/ 29 сентября 2012

У меня была похожая проблема, однако мне пришлось иметь дело с моим верхним / нижним колонтитуломПо сути, я просто удалил следующие методы

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return @" "; //@"Top";
}

- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
    return @" "; //@"Bottom";
}
...