Forum Xamarin Xamarin.Forms

Xamarin.Forms Shell Custom renderer

petr_bruzekpetr_bruzek Member ✭✭

Hi, I've decided to use a beautiful Shell navigation concept in my new app, which works perfect. But I ened-up with a bottom-bar navigation using TabBar. If there is more than 5 Tabs inside, the "More" menu item appears. It seems that in Android Shell uses a modal BottomSheetDialogFragment with next menu options, but in iOS - the navigation is pretty awfull - using an inner UIViewController as a new "More" page with a table containing next menu items. Is there any way how to change an iOS implemetation - to be simillar like in Android? Using Shell renderer? If so, how do I have to use renderer in this case. I've found nothing in Microsoft's docs. Thanks.

Answers

  • LandLuLandLu Member, Xamarin Team Xamurai

    I'm afraid this couldn't be easily changed. It is by design on iOS not only on Xamarin.
    For UITabbarController on iOS if we have more than five tabs the more tab will be used to display the rest tabs with a UITableView like what you have seen.
    And Shell is using tabbar controller inside. You need to completely override its architecture if you don't like this default behavior.

  • petr_bruzekpetr_bruzek Member ✭✭

    I thought I could use a new dummy "More" Tab in TabBar with no page linked and call a modal UIController, but this is impossible - it is UITabBarController default behavior and Xamarin.Shell TabBar/Tab as well. So probably it has no solution...

  • LandLuLandLu Member, Xamarin Team Xamurai

    Indeed it is.
    If you want to completely replace the UITabbarController on Shell it means you have created a new control.
    There's a lot of work you need to do to achieve this.

  • petr_bruzekpetr_bruzek Member ✭✭
  • LandLuLandLu Member, Xamarin Team Xamurai
    edited May 29

    It is used for a normal template.
    But for Shell you need to override the root UITabbarController and add new navigation for it.
    There's a lot of work that needs to be done. You could have a try to handle the shell renderer.
    But I don't think this is a good option.

Sign In or Register to comment.