C# Xamarin - Popover segue 导致匿名构建错误
C# Xamarin - Popover segue causes anonymous build error
首先,如果您有相关的环境细节来排除环境因素,可能会对您有所帮助:
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)
通过SO我无法通过以下问题解决问题, here and generally within the Xamarin documentation 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
的 UI 按钮,我的 MainViewController.designer.cs 说它是正确的属性作为 [Outlet]
。
我从 MenuButton
到 Main.storyboard
CTRL + LEFT CLICKED
并正确拖到创建 Segue 的 NavigationDropdownViewController
。我将这个 segue 命名为 NavigationMenuSegue
。
在 Widget
选项卡中,我设置了以下内容:
如果我从 "Adaptive Segue" 树中选择 "Present As Popover" 或从 "Deprecated Segues" 树中选择 "Popover",构建操作会遇到上述错误。
奇怪的是,如果我选择 "Present Modally" 或 "Push" 选项,则在单击 MenuButton
时会出现下拉列表 - 尽管位置错误!本质上,我希望它切换为带有指向菜单按钮的插入符的弹出窗口(这就是我的要求!)
我想要的只是显示在 MenuButton
下方的下拉菜单,其样式与基于 Web 的汉堡包菜单的样式大致相同...我担心根据 Xamarin 的说法,这不是一个孤立的问题Bugzilla here
在 Xcode 中,我可以简单地删除 Views 并使用 .xibs 轻松地进行 segue - 我只是似乎不理解 Xamarin 的设计器。
这是我的 MainViewController.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;
}
}
}
NaviagationBarDropdownViewController.cs
[Register ("NavigationBarDropdownViewController")]
partial class NavigationBarDropdownViewController
{
[Outlet]
[GeneratedCode ("iOS Designer", "1.0")]
UIButton LogoutButton { get; set; }
[Outlet]
[GeneratedCode ("iOS Designer", "1.0")]
UIImageView LogoutIcon { get; set; }
// omitted the other [Outlet]s for the five other buttons in the view for brevity
[Outlet]
[GeneratedCode ("iOS Designer", "1.0")]
UIView NavigationBarDropdownView { get; set; }
void ReleaseDesignerOutlets ()
{
// omitted for brevity
}
}
Popover Segue 构建错误是框架中的错误还是我在创建非常简单的菜单 -> 下拉菜单 UI 模式时完全走错了路!
感谢您花时间阅读本文并为解决方案做出贡献 - 因为我不能再为此掉头发了!
约翰
好的,
我希望这可以帮助其他使用 Xamarin.IOS 设计器遇到此问题的人。
我从与 Xamarin 开发人员的交谈中了解到,该问题现已在最新的 4.1.x 版本(目前在他们的 Beta 频道中)中得到解决。然而,那些宁愿使用稳定构建(即 4.0.x)的人则按照以下步骤解决匿名构建错误:
首先,select 您希望触发 Popover 的 UI 元素,在我的例子中是 MenuButton
。请注意 LocalizationID
,您可以通过单击设计器中的元素并查看 "Properties" window 来找到它。在我的例子中,MenUButton
的 LocalizationID 是 204
:
现在单击 Segue 并再次导航到 "Properties"
window。 Select "Present As Popover"
来自 "Segue"
下拉列表。
接下来,为跳跳虎插入 LocalizationID
(在我的例子中是 MenuButton
的 ID)。请注意,ID 必须包含在 ["INSERT_YOUR_LOCALIZATION_ID_HERE"]
中,因此在我的示例中我输入了 ["204"]
:
完成这些步骤后,项目将生成并且 Popover 将正常运行。
快乐的日子。
首先,如果您有相关的环境细节来排除环境因素,可能会对您有所帮助:
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)
通过SO我无法通过以下问题解决问题
我在 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
的 UI 按钮,我的 MainViewController.designer.cs 说它是正确的属性作为 [Outlet]
。
我从 MenuButton
到 Main.storyboard
CTRL + LEFT CLICKED
并正确拖到创建 Segue 的 NavigationDropdownViewController
。我将这个 segue 命名为 NavigationMenuSegue
。
在 Widget
选项卡中,我设置了以下内容:
如果我从 "Adaptive Segue" 树中选择 "Present As Popover" 或从 "Deprecated Segues" 树中选择 "Popover",构建操作会遇到上述错误。
奇怪的是,如果我选择 "Present Modally" 或 "Push" 选项,则在单击 MenuButton
时会出现下拉列表 - 尽管位置错误!本质上,我希望它切换为带有指向菜单按钮的插入符的弹出窗口(这就是我的要求!)
我想要的只是显示在 MenuButton
下方的下拉菜单,其样式与基于 Web 的汉堡包菜单的样式大致相同...我担心根据 Xamarin 的说法,这不是一个孤立的问题Bugzilla here
在 Xcode 中,我可以简单地删除 Views 并使用 .xibs 轻松地进行 segue - 我只是似乎不理解 Xamarin 的设计器。
这是我的 MainViewController.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;
}
}
}
NaviagationBarDropdownViewController.cs
[Register ("NavigationBarDropdownViewController")]
partial class NavigationBarDropdownViewController
{
[Outlet]
[GeneratedCode ("iOS Designer", "1.0")]
UIButton LogoutButton { get; set; }
[Outlet]
[GeneratedCode ("iOS Designer", "1.0")]
UIImageView LogoutIcon { get; set; }
// omitted the other [Outlet]s for the five other buttons in the view for brevity
[Outlet]
[GeneratedCode ("iOS Designer", "1.0")]
UIView NavigationBarDropdownView { get; set; }
void ReleaseDesignerOutlets ()
{
// omitted for brevity
}
}
Popover Segue 构建错误是框架中的错误还是我在创建非常简单的菜单 -> 下拉菜单 UI 模式时完全走错了路!
感谢您花时间阅读本文并为解决方案做出贡献 - 因为我不能再为此掉头发了!
约翰
好的,
我希望这可以帮助其他使用 Xamarin.IOS 设计器遇到此问题的人。
我从与 Xamarin 开发人员的交谈中了解到,该问题现已在最新的 4.1.x 版本(目前在他们的 Beta 频道中)中得到解决。然而,那些宁愿使用稳定构建(即 4.0.x)的人则按照以下步骤解决匿名构建错误:
首先,select 您希望触发 Popover 的 UI 元素,在我的例子中是 MenuButton
。请注意 LocalizationID
,您可以通过单击设计器中的元素并查看 "Properties" window 来找到它。在我的例子中,MenUButton
的 LocalizationID 是 204
:
现在单击 Segue 并再次导航到 "Properties"
window。 Select "Present As Popover"
来自 "Segue"
下拉列表。
接下来,为跳跳虎插入 LocalizationID
(在我的例子中是 MenuButton
的 ID)。请注意,ID 必须包含在 ["INSERT_YOUR_LOCALIZATION_ID_HERE"]
中,因此在我的示例中我输入了 ["204"]
:
完成这些步骤后,项目将生成并且 Popover 将正常运行。
快乐的日子。