使用 NavigationController 覆盖 NavigationBar 的 GetPositionForBar() - Xamarin
Override NavigationBar's GetPositionForBar() using NavigationController - Xamarin
我正在使用 NavigationController,我希望它的 UINavigationBar 的 GetPositionForBar() 方法始终 return UIBarPosition.TopAttached
。由于我正在使用 UINavigationController,因此无法更改 NavigationBar 委托,因此我不确定如何继续。
我尝试了很多东西,其中之一是:
public class CustomNavigationController : UINavigationController, IUINavigationBarDelegate
{
[Export ("positionForBar:")]
public UIBarPosition GetPositionForBar(IUIBarPositioning barPositioning)
{
return UIBarPosition.TopAttached;
}
}
但它不起作用。我怎样才能做到这一点?我正在使用 Xamarin/Monotouch.
我终于手动创建了自己的 UINavigationBar
并将其添加到视图的顶部,这样我就可以更改委托。
你设置WeakDelegate了吗?像
public class MyTableViewController : UITableViewController {
public override void ViewDidLoad() {
_searchController = new UISearchController();
_searchController.SearchBar.WeakDelegate = this;
}
[Export ("positionForBar:")]
public UIBarPosition GetPositionForBar(IUIBarPositioning barPositioning)
{
return UIBarPosition.TopAttached;
}
}
我正在使用 NavigationController,我希望它的 UINavigationBar 的 GetPositionForBar() 方法始终 return UIBarPosition.TopAttached
。由于我正在使用 UINavigationController,因此无法更改 NavigationBar 委托,因此我不确定如何继续。
我尝试了很多东西,其中之一是:
public class CustomNavigationController : UINavigationController, IUINavigationBarDelegate
{
[Export ("positionForBar:")]
public UIBarPosition GetPositionForBar(IUIBarPositioning barPositioning)
{
return UIBarPosition.TopAttached;
}
}
但它不起作用。我怎样才能做到这一点?我正在使用 Xamarin/Monotouch.
我终于手动创建了自己的 UINavigationBar
并将其添加到视图的顶部,这样我就可以更改委托。
你设置WeakDelegate了吗?像
public class MyTableViewController : UITableViewController {
public override void ViewDidLoad() {
_searchController = new UISearchController();
_searchController.SearchBar.WeakDelegate = this;
}
[Export ("positionForBar:")]
public UIBarPosition GetPositionForBar(IUIBarPositioning barPositioning)
{
return UIBarPosition.TopAttached;
}
}