C#Xamarin - Popover segue导致匿名构建错误

时间:2016-05-10 14:12:37

标签: c# ios xamarin segue viewcontroller

首先,您可能需要了解相关环境细节以排除环境因素:

Dev PC Environment 
_______________________
Windows 10 Enterprise 64 Bit
Intel Core i7 3.40GHz 16GB RAM 
Visual Studio Professional 2015 Version 14.0.25123.00 Update 2
Xamarin 4.0.3.214 (0dd817c)
Xamarin.iOS 9.6.1.8 (3a25bf1)


Macbook (Agent) Environment - used to build and simulate
______________________
OS X El Capitan Version 10.11.4
Simulator Version 9.3
Xcode Version 7.3 (7D175)

通过搜索,我无法通过以下问题解决问题herehere,并且通常在Xamarin文档中here

我在构建时遇到了Xamarin.iOS中的错误:

1>------ Build started: Project: App5.iOS, Configuration: Debug iPhone ------
1>  Generated session id: 22824a3fd65b76ad8c03fd7694e35be1
1>  Generated build app name: App5iOS
1>  Connecting to Mac server 192.168.1.197...
1>  C:\Program Files (x86)\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(997,3): error : 
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========

我有一个名为MainViewController的ViewController,它是空白的,保存为名为MenuButton的UIButton,我的MainViewController.designer.cs表示正确归因为[Outlet]

来自CTRL + LEFT CLICKEDMenuButton的{​​{1}},并正确拖到创建了Segue的Main.storyboard。我将此命名为NavigationDropdownViewController

Image shoing segue from MainViewController to NavigationBarDropdownViewController

NavigationMenuSegue标签中,我设置了以下内容:

Segue properties

如果我选择"作为Popover"来自"自适应瞄准"树或者" Popover"来自" Deprecated Segues"树,构建动作遇到上面的错误。

奇怪的是,如果我选择"呈现模态"或" Push"单击Widget时出现下拉选项 - 尽管位置错误!基本上我希望它切换为一个带有指向菜单按钮的插入符号的弹出窗口(这就是我所要求的!)

我想要的只是下拉菜单显示在MenuButton下面,与汉堡网页菜单相同的样式...我担心这不是一个孤立的问题根据Xamarin&#39 ; s Bugzilla here

在Xcode中,我可以简单地删除视图并使用.xibs来轻松实现 - 我或许似乎并不理解Xamarin的设计师。

这是我的MainViewController.cs

MenuButton

NaviagationBarDropdownViewController.cs

partial class MainViewController : UIViewController
{
    public MainViewController (IntPtr handle) : base (handle)
    {
    }
}

[Register ("MainViewController")]
partial class MainViewController
{
    [Outlet]
    [GeneratedCode ("iOS Designer", "1.0")]
    UIButton MenuButton { get; set; }

    [Outlet]
    [GeneratedCode ("iOS Designer", "1.0")]
    UIView MainView { get; set; }

    void ReleaseDesignerOutlets ()
    {
        if (MenuButton != null) {
            MenuButton.Dispose ();
            MenuButton = null;
        }
        if (MainView != null) {
            MainView.Dispose ();
            MainView = null;
        }
    }
}

Popover Segue构建错误是框架中的错误还是我在创建一个非常简单的菜单时完全走错路面 - >下拉UI模式!

感谢您花时间阅读本文并为解决方案做出贡献 - 因为我无法承受失去更多的头发!

约翰

1 个答案:

答案 0 :(得分:2)

好的,

我希望这可以帮助其他任何使用Xamarin.IOS设计师遇到此问题的人。

我从与Xamarin开发人员的交谈中了解到,该问题现已在最新的4.1.x版本(目前处于其Beta版频道)中得到解决。但是,那些宁愿使用稳定版本(即4.0.x)的人会按照以下步骤来解决匿名构建错误:

首先,选择您想要触发Popover的UI元素,在我的例子中是MenuButton。注意LocalizationID,您可以通过单击设计器中的元素并查看“属性”窗口来找到它。就我而言,MenUButton的LocalizationID为204

enter image description here

现在点击Segue,然后再次导航到"Properties"窗口。从"Present As Popover"下拉菜单中选择"Segue"

接下来,为tigger插入LocalizationID(在我的情况下为MenuButton的ID)。请注意,ID必须包含在["INSERT_YOUR_LOCALIZATION_ID_HERE"]中,因此在我的示例中,我输入了["204"]

enter image description here

执行这些步骤后,项目将构建并且Popover将正常运行。

快乐的日子。