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

Iphone 将UItableView索引显示在表的左侧而不是右侧,iphone,objective-c,cocoa-touch,uitableview,Iphone,Objective C,Cocoa Touch,Uitableview,我通过实现以下委托方法来使用索引UITableView: - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 索引显示在表的右侧。 我想知道索引是否可以显示在左边 谢谢,不

我通过实现以下委托方法来使用索引UITableView:

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 
索引显示在表的右侧。 我想知道索引是否可以显示在左边


谢谢,

不,此索引的样式和位置是不可配置的(很遗憾)。

不,此索引的样式和位置是不可配置的(很遗憾)。

我不认为api公开了该组件。不幸的是,你不得不抑制旋转并将手机倒置,这将是一个非常糟糕的用户体验。(只是一个玩笑,不要投我反对票)

我不认为api公开了那个组件。不幸的是,你不得不抑制旋转并将手机倒置,这将是一个非常糟糕的用户体验。(只是一个玩笑,不要投我的反对票)

即使没有被iOS API正式公开,也应该可以通过“黑客”一点来移动索引

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

 po [myTableView recursiveDescription]
这将打印视图树,通过对其进行分析,您应该找到一种方法,以编程方式找到您感兴趣的UIView,只需移动它(
view.frame.origin
),而无需使用任何专用API


但在尝试这一点之前,请三思。那个指数在右边有一个很好的理由,大多数人都是右手,拇指在右边。。。在另一方面,它将很难使用。

即使iOS API没有正式公开,也应该可以通过“黑客”一点来移动索引

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

 po [myTableView recursiveDescription]
这将打印视图树,通过对其进行分析,您应该找到一种方法,以编程方式找到您感兴趣的UIView,只需移动它(
view.frame.origin
),而无需使用任何专用API


但在尝试这一点之前,请三思。那个指数在右边有一个很好的理由,大多数人都是右手,拇指在右边。。。在另一边使用会很困难。

您可以将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 
就这样:)

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

更新:完全可自定义且易于使用的滚动条,您可以在此处找到:

您可以将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 
就这样:)

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

更新:完全可自定义且易于使用的滚动条,您可以在此处找到:

您在set-indexView中缺少一个开头括号,但感谢您的帮助。我有一个更好的解决方案,请检查此免费代码,它将解决您的所有问题,等等。你在SetIndexView中缺少一个开头括号,但是谢谢你的帮助。我有一个更好的解决方案给你们,检查这个免费代码它会解决你所有的问题和更多。请检查此链接,可能会有所帮助。请检查此链接,可能会有所帮助。