IOS 응용 프로그램을 구현하기 위해 Xamarin과 MVVMCross를 사용하고 있습니다. 내가 일하고 있어요 뷰는 제대로 표시되지만, ONLY 때 데이터가 내 ViewModel에 내부와하지에 결합되는 하드 코딩 할 때 내 데이터 뷰 후, SQLite는에서 후반에만 불확실한 시간을 도착 (디자인과 필요에 의해 등) 가 표시됩니다.MvxCollectionViewSource의 데이터가 변경 될 때 어떻게 UICollectionView를 다시 그립니다.
- 작업 UICollectionView을 가지고 내보기에 /보기 스토리 보드 내부 (전화 : 아래 코드에서 CollectionView)
- 사용자 정의 레이아웃과 내가 사용하고 지금까지 성취하고 무엇
대한 XIB 파일의 모든 또한 내보기에 올바르게 경우에만 제대로 작동 및 디스플레이
- 뷰를 표시 UICollectionViewCell의 ViewModel 다 ta는 ViewDidLoad()이 호출 될 때 완전히 채워집니다.
문제 : 뷰가 행복하게 표시되는 동안 내 뷰 모델에서
- 내 데이터는 시간의 불확실한 양 모델의 데이터베이스에서 업데이트됩니다. 나는 아래 (양방향/단방향 바인딩을 시도하고,뿐만 아니라 같은)로 데이터를 바인딩 할 때 최종 데이터 나중에 오면, 나는 내보기에 업데이트를하지 않습니다.
내가 할 수없는 것 무엇 :
- 내가 실제로 을 다시 그릴 수 있으며, 뷰 모델의 데이터의 변경을 보장하기 위하여 MvxCollectionViewSource 아래를 새로 어쩌면 UICollectionView 다시 그리기 또는 UICollectionView와 신규 및 업데이트 된 데이터 내 사용자 정의 세포를 보여줍니다.
하는 코드 (TM)
다음 세포 구현되는 CollectionView. 나는 온라인으로 모든 예제를 따라하고 스튜어트 놈과 그의 새끼 고양이에서 나는 정확히 같은 모든 패턴을 구현할 수 있는지 확인 :
CollectionView.RegisterNibForCell(MyCell.Nib, MyCell.Key);
var source = new MvxCollectionViewSource(CollectionView, MyCell.Key);
CollectionView.Source = source;
var set = this.CreateBindingSet<MyView, MyViewModel>();
set.Bind(source).To(vm => vm.ListOfStuff);
set.Apply();
CollectionView.ReloadData();
: [Register("MyCell")]
public partial class MyCell : MvxCollectionViewCell
{
public static readonly UINib Nib = UINib.FromName("MyCell", NSBundle.MainBundle);
public static readonly NSString Key = new NSString("MyCell");
public MyCell(IntPtr handle) : base(handle)
{
this.DelayBind(() => {
var set = this.CreateBindingSet<MyCell, SomeModelClass>();
set.Bind(Label1).To(item => item.Label1);
set.Bind(Label2).To(item => item.Label2);
set.Apply();
});
}
public static MyCell Create()
{
return (MyCell)Nib.Instantiate(null, null)[0];
}
}
보기에 내 의 viewDidLoad()
이 같이 보입니다NB! 위에 표시된 ListOfStuff 정말 지금이 문자열을 포함하는 사용자 정의 클래스의 단지 목록입니다.
TL : DR : 나는 ListOfStuff의 값 나는 위의 코드를 호출하는 순간을 모른다. ViewModel에서 코드를 하드 코딩하면 기쁨을 얻습니다. 그렇지 않으면 나중에 데이터가 올바르게 업데이트 되더라도 그렇지 않습니다.
지금은 List<T>
사용 ObservableCollection<T>
를 사용하는 대신에 ... 크라우드 소싱의 뇌의 뉴런, 당신에게
의 범위를 추가 할 때
이 확장 방법으로 작동하는 유용 할 수 있습니다 – user757410
source.ReloadOnAllItemsSourceSets = TRUE; !!! 이전에 너무 불렀지 만 작동하지 않았지만 셀 크기가 잘못되었다고 생각합니다. 이러한 것들은 실수없이 오류를 렌더링하지 못합니다. – user757410