显示表左侧的UItableView索引而不是右侧

时间:2011-04-01 14:52:11

标签: iphone objective-c cocoa-touch uitableview

我通过实现以下委托方法使用Indexed UITableView:

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 

索引显示在表格的右侧。 我想知道索引是否可以显示在左侧。

谢谢,

4 个答案:

答案 0 :(得分:3)

您可以将tableView索引视图移动到左侧,但只是一点点,这样您就不会拒绝您的应用程序))。方法如下:

// somewhere in your code for example in table view delegate method add this code
// take the index view, which is the last subview on the tableView
UIView *indexView = [[self.tableView subviews]lastObject];

// now take its frame and play with it
CGRect indexViewRect = indexView.frame;
indexViewRect.origin.x -= 50;      // move it to the left by -50
indexView.frame = indexViewRect;   // set the new frame 

多数民众赞成:)

顺便说一句,如果你将索引视图移到最左边,我不认为Apple会拒绝你的应用程序,因为我在iPad上的联系人应用程序中看到了这一点,但无论如何都要冒风险。

更新:完全可自定义且易于使用的ScrollBar,您可以在这里找到: https://github.com/BasheerSience/BRScrollBar

答案 1 :(得分:2)

不,这个索引的样式和位置是不可配置的(不幸的是)。

答案 2 :(得分:1)

我不认为api暴露了那个组件。可悲的是,你必须压制旋转并将手机颠倒过来,这将是一个非常糟糕的用户体验。 (只是一个笑话,不要低估我)

答案 3 :(得分:1)

即使没有被iOS API正式公开, 也可以通过“黑客攻击”来移动索引。

首先,您必须在UITableView子视图树中找到索引。 一种简单的方法是在运行时放置一个断点并使用它:

 po [myTableView recursiveDescription]

这将打印视图树并通过分析它,您应该找到一种方法以编程方式找到您感兴趣的UIView,并移动它(view.frame.origin),并且,而不使用任何私有API < / em>的

但在尝试之前,请三思而后行。这个指数在右侧是有充分理由的,大多数人右手握拇指......在另一边很难使用。