Arseniy Banayev
Arseniy Banayev

Reputation: 694

UITableView Custom Scrollbar

How can I create a custom scrollbar for a UITableView?

I want to remove the default one that pops up when tracking begins and that disappears when tracking ends. I want, instead, to have one similar to that in a computer program: (a) it's on the right side of the screen and permanently visible; (b) manually scrolling the bar will scroll the UITableView to the appropriate position; (c) scrolling the UITableView will scroll the scroll bar appropriately (without showing the default one that Apple provides).

The difficulty in (b) and (c) is that, as far as I know, Apple only provides methods to scroll to a particular row/section, but not to scroll to three-fourths of the way down a row. So, for example, if I want to scroll the scroll bar, the UITableView will subsequently only scroll to the top of a row/cell. The method I'm talking about is:

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated

Has anyone implemented a custom scroll bar in their UITableView before? Or can someone help me figure out a way to solve the following problems:

Thanks!


Upvotes: 5

Views: 5337

Answers (1)

freytag
freytag

Reputation: 4819

UITableView inherits from UIScrollView, that means you can use any of the existing functions. In your case

(void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated

should do the job. It moves the table to any position you want.

To disable the existing scroll indicator, use

table.showsVerticalScrollIndicator = NO;

And to add your own, just add your custom view!

Upvotes: 2

Related Questions