我创建了一个继承自 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。