0

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.

4

1 に答える 1

1

Objective-C を使用して XCode であなたの例を試してみましたが、このアプローチが機能することを確認できます。私も MonoTouch を試してみましたが、あなたが報告したのと同じ結果が得られました。

過去に、Three20 バインディング コードで、このような異常終了を引き起こしていると思われるいくつかの問題を発見しました。既存のバインディング コードを試して修正するか、必要なバインディングだけを Three20 から手動で作成することができます。

http://docs.xamarin.com/ios/advanced_topics/binding_objective-c_types

于 2012-04-30T03:49:52.017 に答える