使用NavigationController覆盖NavigationBar的GetPositionForBar() - Xamarin

时间:2015-10-13 12:23:08

标签: xamarin xamarin.ios navigationbar navigationcontroller

我使用的是NavigationController,我希望其UINavigationBar的GetPositionForBar()方法始终返回UIBarPosition.TopAttached。由于我使用的是UINavigationController,因此无法更改NavigationBar委托,所以我不确定如何继续。

我尝试了很多东西,其中一个是:

public class CustomNavigationController : UINavigationController, IUINavigationBarDelegate
{
    [Export ("positionForBar:")]
    public UIBarPosition GetPositionForBar(IUIBarPositioning barPositioning)
    {
        return UIBarPosition.TopAttached;
    }
}

但它没有用。我怎样才能做到这一点?我使用的是Xamarin / Monotouch。

2 个答案:

答案 0 :(得分:0)

我最终手动创建了自己的UINavigationBar并将其添加到View的顶部,这样我就可以更改代理。

答案 1 :(得分:0)

你设置了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;
    }
}