使用 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;
    }
}