2016-07-18 8 views
0

Ich habe ein TableView mit einer TableViewCell erstellt und habe immer die View-Öffnung. Ich habe diesen Fehler:Warum bekomme ich eine "Muss Autorisierungsmaske in Beschränkungen übersetzen, um _setHostsLayoutEngine: YES" -Fehler in Xamarin iOS zu haben?

Must translate autoresizing mask into constraints to have _setHostsLayoutEngine:YES

Ich verwende XIB-Datei, um meine TableViewCell und die TableView zu entwerfen.

Das ist meine Tableview:

public partial class FavoriteProjectsView : MvxTableViewController<FavoriteProjectsViewModel> 
{ 
    public FavoriteProjectsView() : base("FavoriteProjectsView", null) 
    { 
    } 

    public override void ViewDidLoad() 
    { 
     base.ViewDidLoad(); 

     // ios7 layout 
     if (RespondsToSelector(new Selector("edgesForExtendedLayout"))) 
     { 
      EdgesForExtendedLayout = UIRectEdge.None; 
     } 

     var source = new MvxSimpleTableViewSource(TableView, FavoriteProjectsItem.Key, FavoriteProjectsItem.Key); 
     TableView.Source = source; 

     this.CreateBinding(source).To<FavoriteProjectsViewModel>(viewModel => viewModel.Projetos).Apply(); 
     this.CreateBinding(BtnSave).To<FavoriteProjectsViewModel>(viewModel => viewModel.SaveCommand).Apply(); 

     var bounds = UIScreen.MainScreen.Bounds; 
     var carregamento = new CarregamentoIOS(bounds); 

     ViewModel.Carregamento = carregamento; 
     ViewModel.PreenchePagina(); 
    } 
} 

Das ist mein TableViewCell:

public partial class FavoriteProjectsItem : MvxTableViewCell 
{ 
    public static readonly NSString Key = new NSString("FavoriteProjectsItem"); 
    public static readonly UINib Nib = UINib.FromName("FavoriteProjectsItem", NSBundle.MainBundle); 

    protected FavoriteProjectsItem(IntPtr handle) : base(handle) 
    { 
     this.DelayBind(() => 
     { 
      this.CreateBinding(LblName).To<Project>(project => project.Name).Apply(); 
      this.CreateBinding(SwitchFavorite).To<Project>(project => project.IsFavorite).Apply(); 
     }); 
    } 

    public static FavoriteProjectsItem Create() 
    { 
     return (FavoriteProjectsItem)Nib.Instantiate(null, null)[0]; 
    } 
} 

Antwort

1

Es scheint, Sie MvvmCross oder eine andere mvvm Bibliothek verwenden?

Es ist nur eine Vermutung an dieser Stelle, aber es scheint, dass etwas, irgendwo eine Eigenschaft _setHostsLayoutEngine:YES setzt, aber diese Einstellung erfordert Auto Layout Einschränkungen, die möglicherweise mit einem Aufruf auf die Sicht auf view.TranslatesAutoresizingMaskIntoConstraints = false deaktiviert wurden.

Das alte System zum Auslegen von Ansichten in iOS sollte etwas namens AutoResizing verwenden. Die AutoResizing Flags können entweder im Code oder im XIB/Storyboard gesetzt werden. Wenn Sie das neue und verbesserte Layoutsystem AutoLayout verwenden, das Einschränkungen bietet und viel mehr Flexibilität (und Komplexität) bietet, sollten für das XIB/Storyboard alle AutoResizing Flags automatisch in Constraints konvertiert werden, die mit dem System AutoLayout verwendet werden können. Dies ist das Standardverhalten, kann jedoch mit dem oben genannten Aufruf view.TranslatesAutoresizingMaskIntoConstraints = false deaktiviert werden.

Weitere Informationen über die Verwendung von Autolayout mit Xamarin iOS Designer finden Sie unter: https://developer.xamarin.com/guides/ios/user_interface/designer/designer_auto_layout/

+0

Dank Mann, dass workerd ist. Beantworten Sie Ihre Frage, ja, ich benutze MvvmCross. –

+0

Großartig, froh, dass geholfen hat! – jgoldberger