UITabBarのボタンのハイライト状態を解除する
UITabBarのボタンを押すとハイライトされる。これを解除するにはUITabBarのSelectedItemにnilを代入する必要がある。MonoTouchだとnull代入だと思い、
tabBar.SelectedItem = null;
としたらnullチェックの例外が発生した。どうも引数nullには対応していない模様。
というわけでnullが入るようにしてみた。
private class UITabBar2 : UITabBar { private static IntPtr selSetSelectedItem = Selector.GetHandle ("setSelectedItem:"); public override UITabBarItem SelectedItem { get { return base.SelectedItem; } set { IntPtr valueHandle = value == null ? IntPtr.Zero : value.Handle; if (this.IsDirectBinding) { Messaging.void_objc_msgSend_IntPtr (base.Handle, UITabBar2.selSetSelectedItem, valueHandle); } else { Messaging.void_objc_msgSendSuper_IntPtr (base.SuperHandle, UITabBar2.selSetSelectedItem, valueHandle); } } } }
これでハイライト状態を解除できるようになった。