Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xib显示空屏幕,尽管它在设计器中运行良好_Ios_Xamarin_Xib_Designer - Fatal编程技术网

Ios Xib显示空屏幕,尽管它在设计器中运行良好

Ios Xib显示空屏幕,尽管它在设计器中运行良好,ios,xamarin,xib,designer,Ios,Xamarin,Xib,Designer,我真的不明白我做错了什么。我设计了一个非常简单的.xib文件,它显示一个文本视图和一个按钮。在designer中,它工作得很好。缩放就像预期的那样工作。但是当我在模拟器中运行程序时,我只得到一个空屏幕。有几次我看到导航栏下方的按钮下部,这让我得出结论,视图必须位于可视区域外的顶部 正如您在下面的图像中所看到的,我已经为视图添加了几个约束,这些约束可以很好地在设计器中缩放视图。我试过增加顶部间距。在StackView中包含视图,但似乎没有任何效果。我错过了什么 下面是使用MvvmCross启动视图

我真的不明白我做错了什么。我设计了一个非常简单的.xib文件,它显示一个文本视图和一个按钮。在designer中,它工作得很好。缩放就像预期的那样工作。但是当我在模拟器中运行程序时,我只得到一个空屏幕。有几次我看到导航栏下方的按钮下部,这让我得出结论,视图必须位于可视区域外的顶部

正如您在下面的图像中所看到的,我已经为视图添加了几个约束,这些约束可以很好地在设计器中缩放视图。我试过增加顶部间距。在StackView中包含视图,但似乎没有任何效果。我错过了什么

下面是使用MvvmCross启动视图的代码

    /// <summary>
    /// Call the MvvmCross ShowViewModel method 
    /// </summary>
    public bool Show<TViewModel>(IMvxBundle presentationBundle = null)
        where TViewModel : IMvxViewModel
    {
        return base.ShowViewModel<TViewModel>(presentationBundle: presentationBundle);
    }

    /// <summary>
    /// Show a view with viewmodel
    /// </summary>
    public bool Show<TViewModel>()
        where TViewModel : IMvxViewModel
    {
        return Show<TViewModel>();
    }
演示文稿在自定义viewpresenter中处理:

using MvvmCross.Core.ViewModels;
using MvvmCross.iOS.Views;
using MvvmCross.iOS.Views.Presenters;
using MvvmCross.Platform;
using Notifier.Classes;
using Notifier.Interfaces;
using UIKit;
using static Notifier.Classes.ViewModelController;

namespace Notifier.iOS.Classes.MvvmCross
{
    public class ViewPresenter : MvxIosViewPresenter
    {
        private IMvxIosViewCreator _viewCreator;

        private IPlatformLog _log;
        private IPlatformLog Log => _log == null ? _log = Mvx.Resolve<IPlatformLog>() : _log;

        protected IMvxIosViewCreator ViewCreator
        {
            get { return _viewCreator ?? (_viewCreator = Mvx.Resolve<IMvxIosViewCreator>()); }
        }

        public ViewPresenter(IUIApplicationDelegate applicationDelegate, UIWindow window)
            : base(applicationDelegate, window)
        {
        }

        public override void Show(MvxViewModelRequest request)
        {
            base.Show(request);
        }
    }
}
以下是.xib的内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12120" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12088"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="HomeView">
            <connections>
                <outlet property="view" destination="2" id="RRd-Eg-VrN"/>
                <outlet property="Registration" destination="11" id="name-outlet-11"/>
            </connections>
        </placeholder>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view contentMode="scaleToFill" id="2" horizontalHuggingPriority="1">
            <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
            <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
            <subviews>
                <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" id="10" translatesAutoresizingMaskIntoConstraints="NO">
                    <rect key="frame" x="16" y="16" width="568" height="128"/>
                    <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                    <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>
                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
                    <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                </textView>
                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="11" translatesAutoresizingMaskIntoConstraints="NO">
                    <rect key="frame" x="16" y="188" width="568" height="30"/>
                    <state key="normal" title="Button">
                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
                    </state>
                </button>
            </subviews>
            <constraints>
                <constraint id="14" firstItem="2" firstAttribute="trailing" secondItem="10" secondAttribute="trailing" constant="16"/>
                <constraint id="15" firstItem="10" firstAttribute="leading" secondItem="2" secondAttribute="leading" constant="16"/>
                <constraint id="16" firstItem="11" firstAttribute="leading" secondItem="2" secondAttribute="leading" constant="16"/>
                <constraint id="17" firstItem="2" firstAttribute="trailing" secondItem="11" secondAttribute="trailing" constant="16"/>
            </constraints>
        </view>
    </objects>
    <simulatedMetricsContainer key="defaultSimulatedMetrics">
        <simulatedScreenMetrics key="destination" type="retina47"/>
    </simulatedMetricsContainer>
</document>
这是设计器中的常规视图:

这是特定iPhone的设计师:

这就是我在模拟器中看到的:


这应该是由于约束问题。请检查您的约束是否正确定义。正确定义约束后,仅当在xib中选择视图时,才应看到蓝线


从屏幕截图中,您只定义了前导约束和尾随约束。还请定义顶部和高度约束。

我不使用Xamarin,但在xcode中,当缺少约束时通常会发生这种情况,正如我所写的:我已经添加了几个约束,但我所看到的只是一个空视图。我编写了另一个屏幕,它删除了所有自动生成的约束,并添加了几个新的约束。那屏幕很有魅力。一定是一些自动生成导致了这种情况。加载和显示XIB的代码在哪里?代码有点复杂。我现在创建的是我们已经使用MvvmCross为Android创建的viewmodels视图。最后,使用MvvmCross的ShowViewModel方法显示视图。我将尝试创建一个小的代码示例并编辑我的帖子。您关于高度限制的评论触发了它。是的,是高度。从未想过默认行为的高度为0。谢谢