2017-12-20 12 views
0

Android에서 완벽하게 작동하는 목록에 대한 가시성 변환기가 있지만 iOS에서 Convert 메서드를 호출 할 수 없습니다.MVVMCross iOS 사용자 정의 가시성 변환기가 호출되지 않음

public class ListVisibilityConverter : MvxBaseVisibilityValueConverter<IList> 
{ 
    protected override MvxVisibility Convert(IList value, object parameter, CultureInfo culture) 
    { 
     var inverse = false; 
     if (parameter != null) 
     { 
      inverse = (bool)parameter; 
     } 

     var listHasEntries = (value != null) && value.Count > 0; 

     if (inverse) 
     { 
      return listHasEntries ? MvxVisibility.Collapsed : MvxVisibility.Visible; 
     } 
     else 
     { 
      return listHasEntries ? MvxVisibility.Visible : MvxVisibility.Collapsed; 
     } 
    } 
} 

은 내가 컨버터를 확인했습니다 Setup.cs에서

var set = this.CreateBindingSet<AddFriendsFromContactsViewController, AddFriendsFromContactsViewModel>(); 
set.Bind(collectionView).For("Visibility").To(vm => vm.SectionedCollection).WithConversion("ListVisibility", true); 
set.Bind(noContactsFoundLabel).For("Visibility").To(vm => vm.SectionedCollection).WithConversion("ListVisibility", false); 
set.Apply(); 

다음 코드 발견되고 ... A A의 ViewController의 viewDidLoad에 내 바인딩에 변환기를 사용 ...

+0

'MvvmCross.Plugin.Visibility' NuGet 패키지가 iOS 프로젝트에 설치되어 있는지 확인하십시오. 당신은 또한 깨끗한/응용 프로그램을 제거하고 다시 구축/배포 해 봤어? 콘솔 출력에 경고/오류가 있습니까? – Plac3Hold3r

+0

나는 깨끗하게하고 제거한 다음, 다시 빌드하고 배포했다. 문제를 해결하지 못했습니다. 콘솔에서 다음과 같은 오류가 나타납니다 - "MvxBind : 경고 : 19.80 SectionedCollection에 대한 바인딩 가시성을위한 대상 바인딩을 만들지 못했습니다". SectionedCollection은 ObservableCollection에서 파생됩니다. –

+0

언급하지 않으 셨습니다. 적절한 NuGet 패키지가 설치되어 있습니다. –

답변

0

iOS 프로젝트의 설정에서 ValueConverterAssemblies를 무시하고 수동으로 값 변환기를 추가하면 문제가 해결되었습니다.

protected override IEnumerable<Assembly> ValueConverterAssemblies 
{ 
    get 
    { 
     var assemblies = base.ValueConverterAssemblies; 
     var valueConverterAssemblies = assemblies as Assembly[] ?? assemblies.ToArray(); 
     valueConverterAssemblies.ToList().Add(typeof(ListVisibilityConverter).Assembly); 
     return valueConverterAssemblies; 
    } 
}