2012-05-01 13 views
2

私はその上にUITableViewの暗い背景を持っています。デフォルトでセクションインデックスは半透明で、暗い文字色です。セクションインデックスのテキストの色をUITableViewCellタイトルラベルと同じ色に変更したいと思います。私はちょっと読んだことがあります。あなたはUITableViewをサブクラス化しなければならないようですね?これはどうすればいいですか?この問題を解決するにはサブクラスUITableViewはセクションインデックスのフォント色を変更しますか?

+0

[iPhoneアプリケーションのUITableViewでセクションインデックスをカスタマイズする]の可能な複製(http://stackoverflow.com/questions/2643400/customizing-section-indexes-in-uitableview-in-iphone-application)パブリックAPIで可能です。 – jrturton

答えて

0

私はviewDidAppearで次のように使用:

for (UIView *subView in [self.view subviews]) 
    { 
     if ([[[subView class] description] isEqualToString:@"UITableViewIndex"]) 
     { 
      [subView performSelector:@selector(setIndexColor:) withObject:[UIColor whiteColor]]; 
     } 
    } 

それが文書化されていないので、セレクタ経由にする必要があります。あなたがする可能性を持っているのiOS 6以降で

+0

プライベートAPIを使用すると、App Storeからの拒否の危険性があるという警告がアップしました。 Appleの自動コードレビューの仕組みはわかりませんが、@selector(setIndexColor:)をNSSelectorFromString(@ "setIndexColor:") 'に置き換えることを検討してください。また、条件付きで 'respondsToSelector:'を使うと、クラス記述をチェックするよりも安全です。 – clozach

6

それが好き:iOSの6.0のよう

searchTable.sectionIndexColor = [UIColor blackColor]; 
0

をドラッグするときに、セクションインデックスの色と示した背景を変更できるようにする2つの方法がありますスクラバー

if ([tableView respondsToSelector:@selector(setSectionIndexColor:)]) { 
    tableView.sectionIndexColor = ... // some color 
    tableView.sectionIndexTrackingBackgroundColor = ... // some other color 
} 

もちろん、このデバイスが6.0以上の場合にのみ実行されます。古いiOSでは、何も変わりません。