【发布时间】:2012-08-10 05:19:12
【问题描述】:
我正在尝试继承 UINavigationBar,并通过在 Interface Builder 中设置导航栏的类在我的 UINavigationController 中使用它。 (类似于这个答案:https://stackoverflow.com/a/10007896/139388)
当我覆盖 SizeThatFits() 时,导航栏不再出现在我的应用程序中。如果我注释掉覆盖并重新运行应用程序,导航栏会正确显示。
[Register ("MyNavigationBar")]
public partial class MyNavigationBar : UINavigationBar
{
public MyNavigationBar (IntPtr handle) : base (handle)
{
}
// If I comment out this method, the navigation bar appears properly
public override SizeF SizeThatFits (SizeF size)
{
return base.SizeThatFits (size);
}
}
现在,我希望重写仅返回基本实现的方法不会修改类的行为,但我对 iOS 和 MonoTouch 不够熟悉,无法理解这是否是预期/未定义的行为,以及什么我可以做到的。
我注意到的一些事情:
如果我在 SizeThatFits() 上设置断点,则“size”参数为空 (Width=Height=0)。
如果我覆盖 LayoutSubviews() 并在其上设置断点,则只要覆盖 SizeThatFits() 方法,Bounds 和 Frame 属性就会具有有趣的高度(例如 9.035957E-33),但高度是正常的 (44)当 SizeThatFits() 未被覆盖时。
我正在使用 MonoTouch,我的应用在 Xcode 中构建为 Storyboard。
任何帮助表示感谢,谢谢。
【问题讨论】:
-
这种情况是否只发生在模拟器、设备或两者上?以及您使用的是哪个版本的 MonoTouch?
标签: xamarin.ios uinavigationbar