Ich versuche, einen Bildschirm wie der Android-Bildschirm unten in iOS Wie kann ImageView in UiTableViewCell dynamisch geändert werden?
Mein Problem zu schaffen, in iOS die Kreise ist. In iOS verwende ich ImageView für die Kreise mit zwei PNG-Dateien: red_circle und green_circle. Ich muss roten Kreis für positive Werte und grünen Kreis für negative Werte verwenden, aber ich weiß nicht, wie man diese Bedingung im Code überprüft. Kann mir jemand helfen? Ich verwende Xamarin.iOS mit MvvmCross.
Das ist meine UIViewController:
public partial class MyProjectsView : MvxViewController<MyProjectsViewModel>
{
public MyProjectsView() : base("MyProjectsView", null)
{
}
public override void DidReceiveMemoryWarning()
{
base.DidReceiveMemoryWarning();
// Release any cached data, images, etc that aren't in use.
}
public async override void ViewDidLoad()
{
base.ViewDidLoad();
if (RespondsToSelector(new Selector("edgesForExtendedLayout")))
{
EdgesForExtendedLayout = UIRectEdge.None;
}
var source = new MvxSimpleTableViewSource(TblProjects, MyProjectsItem.Key, MyProjectsItem.Key);
TblProjects.Source = source;
this.CreateBinding(source).To<MyProjectsViewModel>(viewModel => viewModel.Projetos).Apply();
this.CreateBinding(LblSyncrhonizingData).For("Visibility").To<MyProjectsViewModel>(vm => vm.IsProgressBarVisible).WithConversion("Visibility").Apply();
this.CreateBinding(Activity).For("Visibility").To<MyProjectsViewModel>(vm => vm.IsProgressBarVisible).WithConversion("Visibility").Apply();
this.CreateBinding(LblDataSynchronized).For("Visibility").To<MyProjectsViewModel>(vm => vm.IsDataSynchronized).WithConversion("Visibility").Apply();
var bounds = UIScreen.MainScreen.Bounds;
var carregamento = new CarregamentoIOS(bounds);
View.Add(carregamento);
ViewModel.Carregamento = carregamento;
await ViewModel.PreencheLista();
}
}
Das ist mein UITableViewCell ist:
public partial class MyProjectsItem : MvxTableViewCell
{
public static readonly NSString Key = new NSString("MyProjectsItem");
public static readonly UINib Nib = UINib.FromName("MyProjectsItem", NSBundle.MainBundle);
protected MyProjectsItem(IntPtr handle) : base(handle)
{
this.DelayBind(() =>
{
this.CreateBinding(LblProjectName).To<Project>(project => project.Name).Apply();
this.CreateBinding(LblPercentage).To<Project>(project => project.PercentCompleted).WithConversion("IntToPercentCompleted").Apply();
this.CreateBinding(LblCostMoney).To<Project>(project => project.Cost.Variation).WithConversion("DoubleThousandToStringAbbreviation").Apply();
this.CreateBinding(LblCostDays).To<Project>(project => project.Schedule.Variation).WithConversion("IntToDaysAbbreviation").Apply();
});
}
public static MyProjectsItem Create()
{
return (MyProjectsItem)Nib.Instantiate(null, null)[0];
}
}
Wo wird Ihr ImageView für Ihren Kreis definiert? Vielleicht könntest du einen Konverter erstellen, der dir 'ImageView'-Kontrolle gibt und einen' UIImage' basierend auf dem positiven/negativen Wert von dir 'ViewModel' bindet. – Plac3Hold3r
Ich definierte die ImageView in XIB-Datei. Ich habe zwei ImageViews für die Kreise und einen Ordner in meinem iOS-Projekt, der zwei PNG-Dateien enthält: red_circle und green_circle. –
Haben Sie Kontext für Ihre ImageView aus Ihrer MvxTableViewCell? – Plac3Hold3r