TTDefaultStyleSheet から継承する新しいクラスを作成しました。
public class BlackStyleSheet : TTDefaultStyleSheet
{
public BlackStyleSheet() : base()
{
Console.WriteLine("BlackStyleSheet created.");
}
public override UIColor TabBarTintColor
{
get
{
Console.WriteLine("BlackStyleSheet.TabBarTintColor returned.");
return UIColor.Black;
}
}
[Export ("tabTintColor")]
public override UIColor TabTintColor
{
get
{
Console.WriteLine("BlackStyleSheet.TabTintColor returned.");
return UIColor.Black;
}
}
}
そして、このカスタム スタイル シートを FinishedLaunching メソッドの既定値として設定します。
public override void FinishedLaunching (UIApplication application)
{
Three20.TTStyleSheet.GlobalStyleSheet = new BlackStyleSheet();
Three20.TTDefaultStyleSheet.GlobalStyleSheet = new BlackStyleSheet();
Console.WriteLine("Three20 style sheet set.");
}
次に、独自のカスタム UIViewController の ViewDidLoad() メソッド内に実際の TTTabStrip 要素と TTTabItem 要素を作成します。TTTabItem オブジェクトは、メソッド レベルではなくクラス レベルで宣言されます。
tab1 = new TTTabItem("1");
tab2 = new TTTabItem("2");
tab3 = new TTTabItem("3");
TabStrip = new TTTabStrip();
TabStrip.Frame = new RectangleF(0,0,View.Frame.Width, 44);
TabStrip.TabItems = NSArray.FromNSObjects(tab1,tab2,tab3);
TabStrip.SelectedTabIndex = 0;
View.AddSubview(TabStrip);
TTDefaultStyleSheet.GlobalStyleSheet プロパティを新しいカスタム スタイルシートに設定すると、アプリがクラッシュします。このプロパティ設定を削除すると、アプリは完全に動作しますが、タブ ストリップは灰色のままです。
私が読んだすべてのフォーラム (MonoTouch 固有のものはないようです) では、すべて独自のスタイルシートを作成し、それをグローバル スタイルシートに設定する方法が適切であることを示しています。しかし、これは MonoTouch ではうまくいかないようです。
誰にもアイデアはありますか?
ありがとうございました、
ジョン K.