на Mvvmcross.core 5.7.0. Если вы хотите представить представление с модальным стилем на iOS, вы можете добавить атрибут MvxModalPresentation
к представлению:
[MvxModalPresentation(
// Add this to modify the present view's style
//ModalPresentationStyle = UIModalPresentationStyle.PageSheet,
//ModalTransitionStyle = UIModalTransitionStyle.CoverVertical
)]
public class SecondView : MvxViewController
{
...
}
Затем способ представленияэто представление аналогично push:
private readonly Lazy<IMvxNavigationService> _navigationService = new Lazy<IMvxNavigationService>(Mvx.Resolve<IMvxNavigationService>);
async private void ExecuteCommand()
{
await _navigationService.Value.Navigate<SecondViewModel>();
}
При последнем закрытии это представление должно выглядеть следующим образом:
async private void ExecuteCommand()
{
await _navigationService.Value.Close(this);
}
Обновление:
После обновления Mvvmcross до 6.0.1.0, мы можем использовать интерфейс IMvxOverridePresentationAttribute
, чтобы определить стиль представления представления.Сделайте, чтобы представление реализовало интерфейс:
public class SecondView : MvxViewController<SecondViewModel>, IMvxOverridePresentationAttribute
{
...
public MvxBasePresentationAttribute PresentationAttribute(MvxViewModelRequest request)
{
var instanceRequest = request as MvxViewModelInstanceRequest;
SecondViewModel viewModel = instanceRequest?.ViewModelInstance as SecondViewModel;
if (viewModel.IsModalView)
{
return new MvxModalPresentationAttribute();
}
return new MvxChildPresentationAttribute();
}
...
}
IsModalView
определено в моей ViewModel.когда мы хотим представить представление, используйте это для изменения стиля:
public class SecondViewModel : MvxViewModel<bool>
{
...
public override void Prepare(bool parameter)
{
IsModalView = parameter;
}
public bool IsModalView { set; get; }
...
}
// The navigate method
await _navigationService.Value.Navigate<SecondViewModel, bool>(false);