Подтвердить что ты не робот

Настройка индексов раздела в UITableView в приложении iphone

  • Кто-нибудь пытался настроить индекс раздела по умолчанию, отображаемый в UITableView.
  • Я хочу изменить внешний вид UITableView SectionIndex.
  • Можно ли его настроить?
  • Есть ли какие-либо методы делегата, доступные для этого?
  • Какие методы делегата мне следует использовать - если ответ на вопрос выше да?
  • I have uploaded an image for the sample check it out.
4b9b3361

Ответ 1

Не похоже, что стандартное представление индекса настраивается.

В моем приложении я просто создал собственный индексный указатель вместо стандартного. В основном все, что вам нужно сделать, это отслеживать позицию касания в этом представлении и соответственно прокручивать UITableView. Вам также может потребоваться добавить некоторые визуальные эффекты - изменить цвет фона представления при касании и выделить текущий заголовок раздела.

Ответ 2

https://github.com/Hyabusa/CMIndexBar

Используйте этот плагин из Hyabusa. Простая замена для индекса UITableView, который позволяет устанавливать цвета

CMIndexBar *indexBar = [[CMIndexBar alloc] initWithFrame:CGRectMake(self.view.frame.size.width-35, 10.0, 28.0, self.view.frame.size.height-20)];
[indexBar setIndexes:[NSMutableArray arrayWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",@"G", nil]];
[self.view addSubview:indexBar];
[indexBar release];

делегат

- (void)indexSelectionDidChange:(CMIndexBar *)IndexBar:(int)index:(NSString*)title;

Ответ 3

Быстрая версия:

tableView.sectionIndexBackgroundColor = UIColor.clearColor() //iOS7+
tableView.sectionIndexTrackingBackgroundColor = UIColor.clearColor() //iOS6+
tableView.sectionIndexColor = UIColor.redColor() //iOS6+

Чтобы настроить высоту индексного вида (только стиль UITableViewStylePlain):

tableView.sectionIndexMinimumDisplayRowCount = 15

Ответ 4

tableView.tintColor = UIColor.redColor();

сделает это за вас

Ответ 5

На самом деле для Apple не существует официального Apple. И Apple может отклонить ваше приложение, если вы это сделаете. Если вы просто хотите настроить indexBar, то ниже библиотека может вам помочь.

Вы можете использовать пользовательскую библиотеку CollectionIndexTools по Swift (iOS 8+), которую вы можете настроить.

https://github.com/ReverseScale/CollectionIndexTools

Здесь пример фрагмента для CollectionIndexTools

lazy var collectionViewIndex: CollectionViewIndex = {
        let collectionViewIndex = CollectionViewIndex()
        collectionViewIndex.indexTitles = ["c", "v", "t", "m", "n", "w", "e", "r", "t", "y", "u", "i", "o", "p", "h", "d", "c", "b", "q"]
        collectionViewIndex.addTarget(self, action: #selector(FakeCollectionViewController.selectedIndexDidChange(_:)), for: .valueChanged)
        collectionViewIndex.translatesAutoresizingMaskIntoConstraints = false
        return collectionViewIndex
    }()