Xamarin.iOS-无法从另一个视图控制器中加载视图控制器

时间:2019-10-02 17:21:35

标签: xamarin view uiviewcontroller xamarin.ios xib

我最近开始使用Xamarin进行开发,所以我绝不是专家,并且已经在这个问题上停留了大约一天。

首先,我没有使用情节提要。我正在创建自己的自定义视图(xib)并从代码中加载它们

我正在构建一个新的Xamarin.iOS应用,并试图从另一个视图控制器中加载视图控制器。最初,我是从AppDelegate加载第一个控制器,如下所示:

        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            window = new UIWindow(UIScreen.MainScreen.Bounds);
            appStartUpController = new AppStartUpController();
            window.RootViewController = appStartUpController;
            window.MakeKeyAndVisible();

            return true;
        }

这可以很好地加载AppStartUpController,这基本上只是一个带有背景图像的加载屏幕,并且可以在我在后台进行API调用时加载动画。 API调用完成后,我想加载另一个视图控制器。

API调用完成后,我尝试像这样加载下一个Controller:

            var controller = new CityPickerViewController();
            this.NavigationController.PushViewController(controller, false);

这是我的CityPickerViewController:

    public partial class CityPickerViewController : UIViewController
    {
        CityPicker_View v;
        public CityPickerViewController(IntPtr handle) : base(handle)
        {
        }

        public CityPickerViewController ()
        {
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            v = CityPicker_View.Create();
            this.View = v;
        }

        public override void ViewWillAppear(bool animated)
        {
            base.ViewWillAppear(false);
            UIImage i = UIImage.FromFile("citypickbackground.jpg");
            i = i.Scale(this.View.Frame.Size);

            this.View.BackgroundColor = UIColor.FromPatternImage(i);
        }
    }

我可能在这里缺少明显的东西,但是不会加载CityPickerViewController。如果我在代码中放置了一个断点,则viewDidLoad / ViewWillAppear重写将永远不会被命中。

我是一名菜鸟程序员,因此一定会感谢任何提示。预先感谢!

1 个答案:

答案 0 :(得分:0)

欢迎您!

请改用base.NavigationController.PushViewController(controller, true);,因为您没有本地导航控制器。

您的CityPickerViewController中也可能存在问题,因此如果不起作用,请尝试使用其他ViewController。