์ํํธ์จ์ด ๋ค๋ก ๋ฒํผ์ ํ๋์จ์ด ๋ค๋ก ๋ฒํผ๊ณผ ๋์ผํ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ด๋ก ์ธํด Android(๋ฐ ๋ด๊ฐ ์ฝ์ iOS)์์ ์๊ธฐ์น ์์ ๋์์ด ๋ฐ์ํฉ๋๋ค.
ํ๋์จ์ด "๋ค๋ก" ๋ฒํผ์ ๋๋ฅผ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก "OnBackButtonPressed()" ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค.
๋ฉ์๋๊ฐ ํธ์ถ๋์ง ์์ต๋๋ค.
NETStandard.Library {2.0.1} SQLite.Net.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.Model.Helpdesk
NETStandard.Library {2.0.1} Adapt.Model.Helpdesk
System.Runtime.Serialization.Pri... {4.3.0} Adapt.Model.Helpdesk
System.ServiceModel.Http {4.4.1} Adapt.XivicClient.Standard
System.Reflection.TypeExtensions {4.4.0} Adapt.XivicClient.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.XivicClient.Standard
NETStandard.Library {2.0.1} Adapt.XivicClient.Standard
System.Runtime.Serialization.Pri... {4.3.0} Adapt.XivicClient.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.Model.Common.Standard
NETStandard.Library {2.0.1} Adapt.Model.Common.Standard
System.Runtime.Serialization.Pri... {4.3.0} Adapt.Model.Common.Standard
NETStandard.Library {2.0.1} Adapt.Presentation.Standard
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.Standard
System.ServiceModel.Http {4.4.1} Adapt.XivicClient.Database.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.XivicClient.Database.Standard
NETStandard.Library {2.0.1} Adapt.XivicClient.Database.Standard
System.Runtime.Serialization.Pri... {4.3.0} Adapt.XivicClient.Database.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.Model.Whakatane
NETStandard.Library {2.0.1} Adapt.Model.Whakatane
System.Runtime.Serialization.Pri... {4.3.0} Adapt.Model.Whakatane
NETStandard.Library {2.0.1} Adapt.Business.Standard
Microsoft.CSharp {4.4.1} Adapt.Business.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.Data.Generic.Standard
NETStandard.Library {2.0.1} Adapt.Data.Generic.Standard
System.Runtime.Serialization.Pri... {4.3.0} Adapt.Data.Generic.Standard
Xamarin.Forms.Maps {2.5.0.280555} Adapt.Presentation.XamarinForms
NETStandard.Library {2.0.1} Adapt.Presentation.XamarinForms
Syncfusion.Xamarin.SfDataGrid {15.4.0.20} Adapt.Presentation.XamarinForms
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.XamarinForms
Xamarin.Android.Arch.Core.Common {1.0.0} Adapt.Presentation.Android
Xamarin.Android.Arch.Lifecycle.C... {1.0.1} Adapt.Presentation.Android
Xamarin.Android.Arch.Lifecycle.R... {1.0.0} Adapt.Presentation.Android
Xamarin.Android.Support.Animated... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Annotations {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Compat {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Core.UI {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Core.Utils {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Design {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Fragment {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Media.Co... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Transition {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v4 {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.AppCo... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.CardView {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.Media... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.Palette {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.Recyc... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Vector.D... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.Android
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.iOS
Microsoft.NETCore.UniversalWindo... {6.0.7} Adapt.Presentation.UWP
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.UWP
Esri.ArcGISRuntime.Xamarin.Android {100.2.0} Adapt.Presentation.Xivic.Android
Esri.ArcGISRuntime.Xamarin.Forms {100.2.0} Adapt.Presentation.Xivic.Android
Microsoft.NETCore.Platforms {2.0.1} Adapt.Presentation.Xivic.Android
NETStandard.Library {2.0.1} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.Core {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.GridCommon {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.SfDataGrid {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.SfDataGrid.An... {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.SfNumericTextBox {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.SfNumericText... {15.4.0.20} Adapt.Presentation.Xivic.Android
Xamarin.Android.Arch.Core.Common {1.0.0} Adapt.Presentation.Xivic.Android
Xamarin.Android.Arch.Lifecycle.C... {1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Arch.Lifecycle.R... {1.0.0} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Animated... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Annotations {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Compat {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Core.UI {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Core.Utils {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Design {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Fragment {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Media.Co... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Transition {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v4 {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.AppCo... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.CardView {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.Media... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.Palette {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.Recyc... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Vector.D... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Build.Download {0.4.7} Adapt.Presentation.Xivic.Android
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.Xivic.Android
Xamarin.Forms.Maps {2.5.0.280555} Adapt.Presentation.Xivic.Android
Xamarin.GooglePlayServices.Base {60.1142.0} Adapt.Presentation.Xivic.Android
Xamarin.GooglePlayServices.Basement {60.1142.0} Adapt.Presentation.Xivic.Android
Xamarin.GooglePlayServices.Maps {60.1142.0} Adapt.Presentation.Xivic.Android
Xamarin.GooglePlayServices.Tasks {60.1142.0} Adapt.Presentation.Xivic.Android
Esri.ArcGISRuntime.Xamarin.Forms {100.2.0} Adapt.Presentation.Xivic.iOS
Esri.ArcGISRuntime.Xamarin.iOS {100.2.0} Adapt.Presentation.Xivic.iOS
Syncfusion.Xamarin.Core {15.4.0.20} Adapt.Presentation.Xivic.iOS
Syncfusion.Xamarin.GridCommon {15.4.0.20} Adapt.Presentation.Xivic.iOS
Syncfusion.Xamarin.SfDataGrid {15.4.0.20} Adapt.Presentation.Xivic.iOS
Syncfusion.Xamarin.SfNumericTextBox {15.4.0.20} Adapt.Presentation.Xivic.iOS
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.Xivic.iOS
Xamarin.Forms.Maps {2.5.0.280555} Adapt.Presentation.Xivic.iOS
Esri.ArcGISRuntime.UWP {100.2.0} Adapt.Presentation.Xivic.UWP
Esri.ArcGISRuntime.Xamarin.Forms {100.2.0} Adapt.Presentation.Xivic.UWP
Microsoft.NETCore.UniversalWindo... {6.0.7} Adapt.Presentation.Xivic.UWP
Syncfusion.Xamarin.SfDataGrid {15.4.0.20} Adapt.Presentation.Xivic.UWP
System.Runtime.Serialization.Pri... {4.3.0} Adapt.Presentation.Xivic.UWP
Xamarin.Forms.Maps {2.5.0.280555} Adapt.Presentation.Xivic.UWP
์์ฒญํ๋ฉด ์ ๊ณตํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ ๋น์ทํ ํ ๋ก ์ ํ์ต๋๋ค. ์ด๊ฒ์ด ๋น์ ์ด ์ฐพ๊ณ ์๋ ๊ฒ์ ๋๊น? https://forums.xamarin.com/discussion/100287/allow-a-single-place-to-handle-back-button-requests-with-async-support
@samhouts ๋ค, ๊ทธ๊ฒ์ ๊ฑฐ์ ์ ํํ ์ฐ๋ฆฌ์ ๋ฌธ์ ์ ๋๋ค. ์์ ์ธ๊ธํ ์ฝ๋ฐฑ์ ์ฝ๋๋ฒ ์ด์ค์ ์ถ๊ฐํ๊ฑฐ๋ ์ํํธ์จ์ด ๋ค๋ก ๋ฒํผ์ ์ด๋ฒคํธ๋ฅผ ํฌํจํ๋๋ก ๊ธฐ์กด ๋ฉ์๋๋ฅผ ๊ฐ์ ํด์ผ ํฉ๋๋ค.
@samhouts ์ด ๋ฒ๊ทธ๊ฐ ์์ง ํ์ฉ๋ฉ๋๊น? ํฐ ๋ฌธ์ ์ ๋๋ค. ์ด๋ค ์ ๋ณด๊ฐ ๋ ํ์ํฉ๋๊น?
OnBackButtonPressed๊ฐ Hard- ๋ฐ Software-BackButtons๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํด์ผ ํ๋ค๋ ์ ์ ๋์ํฉ๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋ ๋ชจ๋๋ฅผ ๊ฐ๋ก์ฑ๋ ๊ฒ์ ๊ทธ๋ฆฌ ์ด๋ ต์ง ์์ต๋๋ค. ๋๋ ๊ทธ ์ฃผ์ ์ ๋ํด ์ฌ๊ธฐ์์ ๋ธ๋ก๊ทธ๋ฅผ ์์ฑํ์ต๋๋ค: https://msicc.net/xamarin-forms-the-mvvmlight-toolkit-and-i-taking-control-over-the-back-buttons/
@MSiccDev ํ๋ ์์ํฌ๊ฐ ์ ์ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ์ ๋ ธ๋ ฅํ๋ค๋ฉด ๊ทธ๊ฒ์ ๊ฒฐ์ฝ ๊ณ ์ณ์ง์ง ์์ ๊ฒ์ด๊ณ ์ฌ๋๋ค์ ๊ธฐ์ ์ด ์ฃฝ์ ๋๊น์ง ๊ณ์ํด์ ์ค์ค๋ก ์ด ์ผ์ ๊ณ์ํด์ผ ํ ๊ฒ์ ๋๋ค.
@AceCoderLaura ํ์ชฝ์ ์ฌ์ค์ ๋๋ค. ๋ค๋ฅธ ํํธ์ผ๋ก๋ ์์ผ๋ก ๋์๊ฐ์ผ ํฉ๋๋ค. ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํ๋ ๊ฒ์ ๋๋ค.
์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฃจํธ ํ์ด์ง์ ํ๋ฒ๊ฑฐ ๋ฉ๋ด๋ฅผ ๊นจ๋จ๋ฆฝ๋๋ค...
-.-
@AceCoderLaura MD ํ์ด์ง๊ฐ ์๋ ๋ด ์ฑ ์ค ํ๋์์ ๋ฌธ์ ์์ด ์ฌ์ฉํ๊ณ ์์ต๋๋ค...
@MSiccDev
๋ด ํดํน ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
public override bool OnOptionsItemSelected(IMenuItem item)
{
//If it's not the "home" button continue as usual
var androidHomeId = 16908332;
if (item.ItemId != Resource.Id.home && item.ItemId != androidHomeId) return base.OnOptionsItemSelected(item);
var navigation = App.MainMasterDetailPage.Detail.Navigation;
if (navigation.NavigationStack.Count > 1)
{
//We can go back, do the arrow functionality
this.OnBackPressed();
return true;
}
else
{
//We're at the root, do the hamburger functionality
return App.MainMasterDetailPage.IsPresented = true;
}
}
@AceCoderLaura ํ์ ๋ค๋ก ๋ฒํผ์ ํด๋ฆญํ ํ OnOptionsItemSelected๊ฐ ์คํ๋์์ต๋๊น oO ์ ๊ฒฝ์ฐ์๋ ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์์ต๋๋ค...(Android)
์ด ๋ฌธ์ ์ ๋ํ ์ง์ ์ด ์์ต๋๊น? ์ฌ๋ฌ ๊ฐ์ ์ค์ฒฉ๋ ํ์ ๋ณด๊ธฐ๊ฐ ์์ผ๋ฉฐ ๋ด ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ด๋ฅผ ํจ์นํ๋ ๊ฒ์ ๋งค์ฐ ํดํคํ ๊ฒ์ ๋๋ค. ๋๋์ด ์ ๋ง๋ฆฐ์ผ๋ก ํจ์นํด์ผํ๋ค๋ @AceCoderLaura์ aggree.
๊ฐ์ ๋ฌธ์ . ์ํฐํ๋ผ์ด์ฆ ์ฑ์์ ๋ฐฑ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ๋ฃจ๋นจ๋ฆฌ ์์ ๋์ด์ผ ํฉ๋๋ค.
์ด๊ฑฐ ๊ณ ์ณ์ฃผ์ธ์ 1๋ ๊ฐ๊น์ด ๋ณด๊ณ ๋๊ฑด๋ฐ ์์ง ์ํ๋๊ฒ ์๊ธฐ๋ค์.
@ddobrev ๋ง์ต๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ์ ์ฉํ ๊ธฐ๋ฅ์ด์ง๋ง ๋ถํํ๋ ์๋ ๋ฐฉ์์ด ๋ช ํํ๊ฒ ์ ์๋์ง ์์์ต๋๋ค. ๋๊ตฐ๊ฐ ์์์ ์ธ๊ธํ์ง๋ง ์๋ต์ด ์์ต๋๋ค.
์, ๊ทธ๊ฒ์ ๊ฑฐ์ ์ ํํ ์ฐ๋ฆฌ์ ๋ฌธ์ ์ ๋๋ค. ์์ ์ธ๊ธํ ์ฝ๋ฐฑ์ ์ฝ๋๋ฒ ์ด์ค์ ์ถ๊ฐํ๊ฑฐ๋ ์ํํธ์จ์ด ๋ค๋ก ๋ฒํผ์ ์ด๋ฒคํธ๋ฅผ ํฌํจํ๋๋ก ๊ธฐ์กด ๋ฉ์๋๋ฅผ ๊ฐ์ ํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ ๋ช ํํ ์ ์ํ๋ค๋ฉด PR์ ํด์ ๊ตฌํํ๋ ค๊ณ ํ์ ๊ฒ์ ๋๋ค.
์ด์ ๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ด ๊ฒฝ์ฐ์๋ (Android์์) ์ด๊ฒ์ ๋ด MainActivity์ ์ถ๊ฐํ๊ธฐ์ ์ถฉ๋ถํ์ต๋๋ค.
protected override void OnPostCreate(Bundle savedInstanceState)
{
var toolBar = FindViewById<global::Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
SetSupportActionBar(toolBar);
base.OnPostCreate(savedInstanceState);
}
์ด๋ ๊ฒ ํ๋ฉด ํ์ ๋ชจ์์์ ํ๋์จ์ด ๋ค๋ก ๋ฒํผ๊ณผ ์ํํธ์จ์ด ๋ค๋ก ๋ฒํผ์ ๋๋ฌ๋ OnBackButtonPressed๊ฐ ์คํ๋ฉ๋๋ค. ํ์ง๋ง ์ ๊ทธ๋ฐ์ง ์ดํด๊ฐ ๋์ง ์์ต๋๋ค.
iOS์์๋ ์ฌ์ ํ ์ฌ์ฉ์ ์ ์ ํ์ด์ง ๋ ๋๋ฌ๋ก ์ง์ ์ถ๊ฐํด์ผ ํ์ต๋๋ค.
3.6.0์์ ์์ ๋ ๊น์?
์ค์๋ก ์งํ ์ค์ผ๋ก ์ฎ๊ฒจ์ง ๊ฒ ๊ฐ์์.
@samhouts ๊ทธ๋์ ์ง๊ธ ์ฌ์์ด ํ์ํฉ๋๊น? ๊ทธ๊ฒ์ ๋ํด ์ง์ ๋์ง ์์ ๊ฒ์ ๋ฌด์์ ๋๊น?
@ddobrev ์ฐ๋ฆฌ๋ ์ฌ์ ํ ์ฌ๋๋ค์ด ์ํ๋ ๊ฒ์ ๋ ธ์ถํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์ง์ ํด์ผ ํฉ๋๋ค. ํ์ฌ OnBackButtonPressed๋ ํ๋์จ์ด ๋ค๋ก ๋ฒํผ์ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ๋งคํ๋๋ฏ๋ก ๊ทธ ๊ธฐ๋ฅ์ด ๋ ๋ง์ด ํ์ ํฉ๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ์ํ๋ ๊ฒ์ OnNavigatingBack ๊ธฐ๋ฅ์ ๋๋ค.
์ํํธ์จ์ด ๋ค๋ก ํ์ดํ๋ฅผ ํด๋น ๋ฐฉ๋ฒ์ ์ฐ๊ฒฐํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ง๊ธ์ ์ฌ์ ํ โโํดํน์ ๋ ๊ฐ๊น๊ณ ์ต์์ ์๋ฃจ์ ์ ์ ๊ณตํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
์๋ฅผ ๋ค์ด OnBackButtonPressed๋ฅผ ๋ ์ด์ ์ฌ์ฉํ์ง ์๊ณ
OnHardwareBackButtonPressed ๋ฐ OnNavigatingBack
๋ญ, ์ด๋ ์ชฝ์ด๋ ์ข์ต๋๋ค. ๊ทธ๋ฅ ํด. ์ถฉ๋ถํ ์ค๋๋์์ต๋๋ค.
ํ์ด์ง ๊ธฐ๋ฅ์ผ๋ก์ ์ด์ ๊ฐ์ ๊ฒ์ด ์๋ฏธ๊ฐ ์์๊น์? ์ญ๋ฐฉํฅ ํ์์ ๊ด์ฐฐํ๊ณ ์ทจ์ํ ์ ์๋ค๋ฉด(๋ฐ๋ผ์ Task\ ๋ด๊ฐ ๋ณผ ์์๋ ๋ ๋ฒ์งธ ์คํ ๊ฐ๋ฅํ ์ต์
์ ์ด๊ฒ์ ํธ์ง: API๋ฅผ ์ฝ๊ฐ ์์ ํ์ต๋๋ค.enum ReverseNavigationSourceType {
Unspecified,
HwButton,
Navbar,
Gesture
}
class ReverseNavigationEventArgs {
public ReverseNavigationSourceType SourceType { get; }
public object Source { get; }
}
class Page {
public virtual Task<bool> OnNavigatingBack(ReverseNavigationEventArgs args) {
return Task.FromResult(true);
}
}
INavigation
์ธํฐํ์ด์ค์ ์ผ๋ถ๋ก ๊ตฌํํ๋ ๊ฒ์
๋๋ค.
@pikausp ์๋ฃจ์ ์ ๋์๊ฒ ์ต๊ณ ์ฒ๋ผ ๋ณด์ ๋๋ค.
๋ํ ์ด๊ฒ์ ๋ ํ์ฅํ์ฌ "ํ์ด์ง ์ํ"์ ์ ์ฌํ ๊ฒ์ ๋์ ํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํ์ด์ง๋ ํ์ฑ ๋๋ ๋นํ์ฑ์ผ ์ ์์ต๋๋ค.
class PageActivationEventArgs { }
class PageDeactivationEventArgs {
public bool IsPermanent { get; }
}
class Page {
public virtual Task OnActivating(PageActivationEventArgs) {
return Task.CompletedTask;
}
public virtual Task<bool> OnDeactivating(PageDeactivationEventArgs) {
return Task.FromResult(true);
}
}
Page๊ฐ OnDeactivating
์์ ๋ฉ์ด์ง๋ฉด ํธ์ถ๋ฉ๋๋ค. IsPermanent
์ ๊ฐ์ ํ์ด์ง๊ฐ ํ์ ์คํ์ ์ ์ง๋๋์ง ์ฌ๋ถ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค(ํ์ ๊ฒฝ์ฐ true, ํธ์์ ๊ฒฝ์ฐ false).
ํ์์ด ์๋ฃ๋๋ฉด ํธ์ถ๋๋ OnActivated
๋ฐ OnDeactivated
ํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ๊ฐ๋ฐ์์๊ฒ ๊ฐ๋ ฅํ ํ์ ํ๋ฆ์ ์ ๊ณตํฉ๋๋ค.
๋น์ ์ ์๊ฐ์ ๋ฌด์์ ๋๊น?
์ฌ๊ธฐ์ ์งํ ์ํฉ์ ๋ณด๊ณ ํ์๊ฒ ์ต๋๊น?
์ฐ์ ์์๋ฅผ ๋์ด๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋๋ ๋๋๋ก ๋ ์ด์ ์๋ํ์ง ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ช ๋
๋์ ๊ฐ์ง๊ณ ์์์ต๋๋ค.
ํ์ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋จ์ ์ด ์๋ ์ ๋ง ๋์ ํดํน์ด๊ธฐ๋ ํฉ๋๋ค. ๋ด ์ฌ์ฉ์ ์ง์ ํ์ ํ์ด์ง ๋ ๋๋ฌ๋ฅผ ์ ๊ฑฐํ๊ณ ํ๋ก์ธ์ค์์ ์ผ๋ถ ๋ฌธ์ ๋ฅผ ์์ ํ๊ณ ์ถ์ต๋๋ค.
์ถฉ๋
์ํํธ ๋ฐฑ ๋ฒํผ ๊ฐ๋ก์ฑ๊ธฐ์ ๋ํ ๋ชจ๋ ์ ๋ฐ์ดํธ. ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ์ ๋ํด ์ ๋ง ๊ณ ์ฌํ๊ณ ์์ต๋๋ค. ์ด ๊ฒ์๋ฌผ์ ์ธ๊ธ๋ ์๋ฃจ์ ์ ์ฐ๋ฆฌ์๊ฒ ์ ํฉํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ์ ๋ง๋ก ํ์ํฉ๋๋ค. ์์ ์ ๋๊ตฌ ๋ชจ์์ ํดํนํ๊ฑฐ๋ ๊ตฌํํด์ผ ํ๋ ๊ฒ์ ๊ทธ๋ฌํ ๋ช ๋ฐฑํ ๋๋ฝ์ ๋ํ ์ฝ๊ฐ์ ๊ณผ์์ ๋๋ค. ์ ๋ฐ ...
์ฌ๊ธฐ @samhouts์ ์ด๋ค ์
๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
์ฌ๊ธฐ์์ ์ฌ๋ฌ ๊ณ ๊ธ ์๋ฃจ์
์ด ์ ์๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ๋ฉฐ, ๋ชจ๋ ์ฐ๋ฆฌ๊ฐ ์ฐพ๊ณ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ด ๊ธฐ๋ฅ๋ ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํด์ผ ํ๋ ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก์ ํ์ํฉ๋๋ค. ์ด๊ฒ๋ ํ์ํฉ๋๋ค. ๋ชจ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ฌด ํดํคํฉ๋๋ค.
์, ํ, ์ด์ ์ฌ๊ธฐ์ ์ค๋ช ๋ ๊ธฐ๋ฅ์ ๊ธฐ๋๊ณ ์์ต๋๋ค. https://github.com/xamarin/Xamarin.Forms/issues/6971#issuecomment -574823028
์ด์๊ฐ ์์ผ์ ๊ฐ์?
@samhouts ์ฐ๊ฒฐ๋ ๋ฌธ์ ๋ฅผ BackButtonBehavior
๋ ์ฌ์ฉ์๊ฐ ๋ค๋ก ํ์์ ์๋ํ ๋ ์คํ๋๋ ๋ช
๋ น ์ฃผ์์ ๋ํผ(์ผ๋ถ ์ถ๊ฐ ํฌํจ)์
๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ญ๋ฐฉํฅ ํ์์ ๊ฐ๋ก์ฑ๋ ๊ฒ์ด ์๋๋ผ ์ฌ์ฉ์๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฐฉ๋ฒ(์ค์์ดํ, ํ์ ๋ชจ์ ๋ฒํผ, Android ๋ฒํผ ๋ฑ)์ ํตํด ๋ค๋ก ํ์์ ์๋ํ ๋ ์ ํํ ์ด๋ค ์ผ์ด ๋ฐ์ํ๋์ง ์ ์ดํ๋ โโ๊ฒ์ ๋๋ค. ๋ด๊ฐ ๊ฒฐ์ ํ ๊ฒฝ์ฐ ๋ค๋ก ํ์ํ๋ ๋์ ์ฌ์ฉ์๋ฅผ ์ ํ์ด์ง๋ก ํ์ํ๋๋ก ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ๋ง์ต๋๊น?
@samhouts iOS uwp ๋ฐ Android์ฉ ํ๋ก๋์ ์ฑ์์ ์๋ํ๋ ๊ฐ๋ก์ฑ๊ธฐ๊ฐ ์์ต๋๋ค. ์ฌ์ฉ์ ์ ์ ํ์ด์ง ๋ ๋๋ฌ๋ฅผ ์ฌ์ฉํ๋ iOS ๋ฐ Android. ์ฌ์ฉ์๊ฐ ์ํํธ์จ์ด ๋๋ ํ๋์จ์ด ๋ค๋ก ๋ฒํผ์ ํตํด ๋ค์ ํ์ํ ๋ "๋ณ๊ฒฝ ์ฌํญ์ ์ทจ์ํ์๊ฒ ์ต๋๊น?"๋ผ๋ ํ์ ์ ํ์ํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํ๋กฌํํธ๋ฅผ ํ์ธํ๋ฉด ๋ค๋ก ํ์์ด ์คํ๋๊ณ ํ์ด์ง๊ฐ ํ์ ๋๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ์ฉ์๋ ํ์ฌ ํ์ด์ง์ ๋จธ๋ฌด๋ฆ ๋๋ค. ๋๋ ์์ง ๋ด ๊ตฌํ์์ ๋๋ฝ๋ ์ค์์ดํ๊ฐ ๋ค๋ก๊ฐ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํ์ง ์์์ต๋๋ค.
@samhouts - ์ ์์์์ ๋ค๋ก ๋ฒํผ์ ๊ฐ๋ก์ฑ์ด ์กฐ๊ฑด๋ถ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ด ๋ช ํํ์ง ์์ต๋๋ค.
์ ์์ด ์ด๋ฐ ์์ผ๋ก ์๋ํฉ๋๊น?
c#
async Task MyProcessBackButton(bool usingShell)
{
bool navigateBack = await DisplayAlert("Cancel?", "Undo changes", "Yes", "No");
var mainPage = usingShell ? (Page)Shell.Current : Application.Current.MainPage;
if (mainPage is MasterDetailPage mdPage) mainPage = mdPage.Detail;
if (navigateBack) await mainPage.Navigation.PopAsync();
}
๊ทธ๋ฐ ์ผ์ด ๋๋ฅผ ์ํด ์ผํด์ผํ์ง๋ง ์ฑ๊ฐ์ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์ฉ๋ฉด ๋ด๊ฐ ์ ์์ ์ ๋๋ก ๋ณด๊ณ ์์ง ์์ ์๋ ์์ต๋๋ค. ์์ ์ ํจ๊ป ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํ์ธํ๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค.
PS @nschoenberg ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ด ์ฑ์์ ์ฌ์ฉ์ ์ง์ ๋ ๋๋ง์ ๊ฐ๋ก์ฑ๊ธฐ๋ ํฉ๋๋ค(NavigationPage์์ ์์ MyProcessBackButton ๋ฉ์๋์ ๊ฐ์ ์์ ์ ์ํํฉ๋๋ค. ์ ์์์ Shell์ด โโํ์ํ์ง ์์ ๊ฒ์ด ์ข์ต๋๋ค. ์ด์ ์ฑ์ ๋ ์ฝ๊ฒ ์ฑํํ ์ ์์).
- {Shell, NaviationPage}.BackButtonCommand๊ฐ ํ ๋น๋์ง ์์ ๊ฒฝ์ฐ ๋ค๋ก ๋ฒํผ์ด ์ ์์ ์ผ๋ก ๋์ํ๊ณ ๋ค๋ก ํ์์ด ์๋์ผ๋ก ๋ฐ์ํฉ๋๋ค.
์ด๊ฒ์ด ๋ด๊ฐ ์๋ํ๋ ๋ฐฉ์์ ๋๋ค. ์ข ์ข ์ฐ๋ฆฌ๋ ์ฌ์ ์๋์ง ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ํฉ๋๋ค. ์ด๊ฒ์ Android์์ ์ฅ์น ๋ค๋ก ๋ฒํผ์ ์ฌ์ ์ํ๊ณ true๋ฅผ ๋ฐํํ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค. ์ด๋ค ์์ผ๋ก๋ ๊ทธ ๊ตฌํ์ ๋ณต์ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง ์์ต๋๊น?
ํ์ด์ง ๊ธฐ๋ฅ์ผ๋ก์ ์ด์ ๊ฐ์ ๊ฒ์ด ์๋ฏธ๊ฐ ์์๊น์? ์ญ๋ฐฉํฅ ํ์์ ๊ด์ฐฐํ๊ณ ์ทจ์ํ ์ ์๋ค๋ฉด ๋๋จํ ๋์์ด ๋ ๊ฒ์ ๋๋ค(๋ฐ๋ผ์ Task
). ๋ํ ์์ฒญ์ด ๋ค๋ก ํ์ํ๊ฒ ๋ ์์ธ์ ๊ตฌ๋ณํ ์ ์์ผ๋ฉด ํธ๋ฆฌํ ์ ์์ต๋๋ค. enum ReverseNavigationSourceType { Unspecified, HwButton, Navbar, Gesture } class ReverseNavigationEventArgs { public ReverseNavigationSourceType SourceType { get; } public object Source { get; } } class Page { public virtual Task<bool> OnNavigatingBack(ReverseNavigationEventArgs args) { return Task.FromResult(true); } }
๋ด๊ฐ ๋ณผ ์์๋ ๋ ๋ฒ์งธ ์คํ ๊ฐ๋ฅํ ์ต์ ์ ์ด๊ฒ์
INavigation
์ธํฐํ์ด์ค์ ์ผ๋ถ๋ก ๊ตฌํํ๋ ๊ฒ์ ๋๋ค.ํธ์ง: API๋ฅผ ์ฝ๊ฐ ์์ ํ์ต๋๋ค.
https://github.com/xamarin/Xamarin.Forms/issues/6971#issuecomment -574823028 ๋ฌธ์ ์์ BackButtonCommand๊ฐ ๋ ธ์ถ๋ ์์น๊ฐ ์ ํํ ์ด๋์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ๊ณ NavigationPage์์๋ง ์ ๊ณต๋ฉ๋๊น? ํฌํจํ๋ NavigationPage์ ๋จ์ผ ๊ตฌํ์ด ์๊ณ ํด๋น ํ์ ์คํ์ ํธ์๋ ๋ชจ๋ ํ์ด์ง๊ฐ ๋์ผํ ๋์์ ์ฌ์ฉํฉ๋๊น? (๋๋ ์ด๊ฒ์ด ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.) ๊ฐ๋ณ ํ์ด์ง๋ ์ด๋ป๊ฒ ์์ฒด ์ฌ์ ์๋ฅผ ๊ตฌํํ๊ณ ๋ช ๋ น์ ํ์ฉํฉ๋๊น?
์์ ์ ๊ณต๋ ์ ์์ด ํ์ด์ง๋น ์ฌ์ ์ํด์ผ ํ๋ ๊ฐ๋ฐ์์ ์๊ตฌ๋ฅผ ์ถฉ์กฑ์ํฌ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ค๋ก ํ์์ ํธ์ถ์ ์ข ์ข ๊ฐ๋ฐ์๊ฐ ๋ค๋ก ํ์์์ ์ผ์ด๋๋ ์ผ์ ๋จ์ํ ์ ์ดํ๊ธฐ๋ฅผ ์ํ๋ ๊ฒ๊ณผ ๊ด๋ จ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํ๊ฑฐ๋ ๋จ์ํ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋์ญ์์ค.
๋ชจ๋ ์ฌ๋์ ๋๋ณํ ์๋ ์์ง๋ง ์ํํธ์จ์ด ๋ฒํผ์ ๋๋ฅด๋ฉด ์คํ๋๋ ์ผ๋ถ ๊ธฐ๋ฅ์ ๊ตฌํํ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฉฐ ๋์ผํ ๊ธฐ๋ฅ์ ํธ์ถํ๋ OnBackButtonPressed
๋ ์ฌ์ ์ํฉ๋๋ค. ๋์ผํ ์ฝ๋๋ฅผ ์คํํ๋ ๋ ๊ฐ์ง ํํ์ ๋ค๋ก ํ์.
์ด๋ฌํ ์์ฑ์ ๋ชจ๋ NavigationPage์ ์ฐ๊ฒฐ๋ ์์ฑ๊ณผ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Core/NavigationPage.cs#L19
ํ์ฑ ํ์ด์ง์ ์ ์ฉํ๋ฉด NavigationPage๊ฐ ๋ฐ์ํฉ๋๋ค. ์ฐ๊ฒฐ๋ ์์ฑ์ ๋ฐ์ธ๋ฉ ๊ฐ๋ฅํ๋ฏ๋ก ํ์ด์ง์์ ์ค์ ํ๊ณ VM์ ๋ฐ์ธ๋ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ข์ต๋๋ค.
<ContentPage NavigationPage.BackButtonCommand={Bindiing BackCommand}
๋ช ๋ น์ด ๊ธฐ๋ณธ ๋์์ "๋นํ์ฑํ"ํ๋ ๊ฒ์ ์ฅ์ ์ค ํ๋๋ ๋น๋๊ธฐ ํ์์ ํ์ฑํํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด์ ๋ฒํผ์ ๋ช ๋ น์ผ๋ก ๋ผ์ฐํ ๋๊ณ ๋ช ๋ น์ ์ํ๋ ๊ธฐ๊ฐ ๋์ ๋ฌด์์ด๋ ํ ์ ์์ผ๋ฉฐ ์ํ๋ ๊ฒฝ์ฐ ํ์ API๋ฅผ ์ฌ์ฉํ์ฌ ํ์์ ์๋ฃํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ชจ๋ ๊ฒ์ ๋น๋๊ธฐ๋ก ๋ง๋๋ ๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก "๋น๋๊ธฐ"๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ค๋ก ์ค์์ดํํ๊ฑฐ๋ ๋ชจ๋ฌ์์ ํด์ ํ๊ธฐ ์ํด ์ค์์ดํํ๋ ๊ฒ๊ณผ ๊ฐ์ ์๋๋ฆฌ์ค ๋๋ฌธ์ ํฅ๋ฏธ๋กญ์ต๋๋ค. ๊ทธ๋์ ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ๊ฒ์ ์ด๋ฌํ ์ ์ค์ฒ๋ฅผ ํญํ๊ณ ๋ช ๋ น์ผ๋ก ๋ผ์ฐํ ํ๊ณ ์ทจ์ํ๋ ๊ฒ์ ๋๋ค. ๋ชธ์ง.
๋ํ ๊ณ์ธต์ ํ๋ก์๋ฅผ ๋๊น์ง ์คํํ ์ ์๋ Navigation ํด๋์ค์ ์ด๋ฒคํธ๋ก ๋ง๋ ๋ค์ ์ด๋ฒคํธ์ ํจ๊ป EventToCommand ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ํ NavigatingBack์ด ์๋ฏธ๊ฐ ์๋์ง ๊ถ๊ธํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ด์ ๊ฐ์ ๊ฒ์ ๊ฐ๊ฒ ๋๋ค๋ฉด ์๊ณผ ์ ์ฌํ ํ์ ์ด๋ฒคํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ์ ๋๋ค.
๋๋ ์ด๊ฒ์ด ์ฝ๊ฐ ํผ๋ ์ค๋ฝ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค :-) ๊ทธ๋ฌ๋ ๋จ์ง ๋ช ๊ฐ์ง ์ง๋ฌธ์ ๋ตํ๊ณ ํ ๋ก ์ ์ํด ๋ช ๊ฐ์ง ์์ด๋์ด๋ฅผ ์ป๊ณ ์ถ์์ต๋๋ค.
ํ์ฑ ํ์ด์ง์ ์ ์ฉํ๋ฉด NavigationPage๊ฐ ๋ฐ์ํฉ๋๋ค. ์ฐ๊ฒฐ๋ ์์ฑ์ ๋ฐ์ธ๋ฉ ๊ฐ๋ฅํ๋ฏ๋ก ํ์ด์ง์์ ์ค์ ํ๊ณ VM์ ๋ฐ์ธ๋ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ข์ต๋๋ค.
<ContentPage NavigationPage.BackButtonCommand={Bindiing BackCommand}
@PureWeen ์ฃ์กํฉ๋๋ค. ํ์ด์ง์์ ์์ฑ์ ์ก์ธ์คํ ์ ์๋ค๋ ์ฌ์ค์ ์์ด๋ฒ๋ ธ์ต๋๋ค. ์ด์จ๋ ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค.
NavigationPage.BackButtonCommand๋ ์ฅ์น ๋ค๋ก ๋ฒํผ๋ ์ฌ์ฉํฉ๋๊น ์๋๋ฉด ์ํํธ์จ์ด ๋ค๋ก ๋ฒํผ๋ง ์ฌ์ฉํฉ๋๊น? ๋ค๋ก ํ์์ ํธ์ถํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ์ฌ NavigationPage.BackButtonCommand ๊ฐ ์ฌ๋ผ์ง๊ณ ๋ ์ผ๋ฐํ๋ ๊ฒ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์กฐ๊ธ ๋ ์๊ฐํด ๋ณผ ํ์๊ฐ ์์ต๋๋ค.
ํ/ํธ์์ ๊ด๋ จ๋ ๊ฒ์ด ์๋ฏธ๊ฐ ์๊ณ ๊ธฐ์กด API์ ์ผ์นํ ์ ์์ต๋๋ค.
์ ํํ๋ ์๋์ง๋ง ์ด ๋ผ์ธ์ ๋ฐ๋ผ ๋ญ๊ฐ
์ฌ์ฉ์ ์์ฒญ ํํ ๋ช
๋ น
์ฌ์ฉ์ ์์ฒญ ํธ์ ๋ช
๋ น
๋๋ PoppingCommand ๋ฐ PushingCommand๋ฅผ ์ฌ์ฉํ๋ฉด ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ๋ ์ธ์์ ์ ์ฌํ ๊ฒ์ ๊ฐ์ง ์ ์์ต๋๋ค.
C#
enum NavigationSourceType {
Unspecified,
HwButton,
Navbar,
Gesture,
FromCode
}
๋๋ ๊ทธ๊ฒ์ ๋ชจ๋ ๋ฐ์ธ๋ฉ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ณ ์ถ์ง๋ง ์์ง ๋ด๊ฐ ์ข์ํ๋ ์์ด๋์ด๋ฅผ ํด๋ฆญํ์ง ๋ชปํ์ต๋๋ค.
ํ์ฌ ํ์ ์ํ๋ฅผ ๋ํ๋ด๋ ํ์ ํญ๋ชฉ์ด ์์ต๋๊น?
๋ฐ๋ผ์ ๋ช
๋ น์ ํตํด ์ํ๋ ๊ฒฝ์ฐ ์งํ ์ค์ธ ์ ์ค์ฒ์ธ์ง ๋๋ ๊ธฐํ ๋์์ธ์ง ํ์์ ์์ฒญํ ์ ์์ต๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ์ฐ๋ฆฌ๋ ์ด๊ฒ์ 1๋ ๋๊ฒ ๊ธฐ๋ค๋ ค ์์ต๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ์ฐ๋ฆฌ๋ ์ด๊ฒ์ 1๋ ๋๊ฒ ๊ธฐ๋ค๋ ค ์์ต๋๋ค.
์์ฌํ๋ค. 1๋ ์ ์๋ฌด๊ฒ๋ ์๋๋๋ค. iPad์์ MasterDetail์ด ์๋ SplitView๋ 4๋ ์ ์ ์๋ํ์ง ์๊ณ ๋ฒ๊ทธ๊ฐ ์๋ค๊ณ ๋ณด๊ณ ๋์์ต๋๋ค. ์ด๋ Xamarin.Forms๋ ์ฌ์ ํ Bugzilla๋ฅผ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค.
@SebastianKruseWago ์ด๋ฏธ ๋ค๋ฅธ ์์ญ์ ์กด์ฌํ๋ ์์ ๊ธฐ๋ฅ๊ณผ ์์ ํ ๋ค๋ฅธ ์๋๋ฆฌ์ค์ ๋๋ค. ๊ทธ๋ค์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ํ์ฉํ๋ "๋ฒ๊ทธ"๋ฅผ ์์ ํ์ต๋๋ค. ๋ฐ๋ผ์ 1๋ ์ ์ฒซ๋ ๋ถํฐ ํฌํจ๋์ด์ผ ํ๋ ํญ๋ชฉ์ ๋ํด ๋ง์ ๊ฒ์ ๋๋ค.
@akemper1 SplitView๋ ์ฒซ๋ ๋ถํฐ ์๋ํด์ผ ํฉ๋๋ค. iPad MasterDetailRenderer์๋ง ์๋ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ฒ๊ทธ์ด๊ธฐ๋ ํฉ๋๋ค. ์ถํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก 2.4 ์ ๋ ์ด์ ์ ์๋ํ์ต๋๋ค. ๊ทธ๋์ ๋ค๋ฅด์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์๋ ํ์ธ์, ์์์ด ์์ต๋๊น?
@scriptBoris ๊ฐ๋ฅํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์ ๋งํฌ์ ๊ฐ์ผ๋ฉฐ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ๋ฐ๋ผ ํ ์๋ฃจ์ ์ด ๋ค๋ฅธ ์๋ฃจ์ ๋ณด๋ค ๋ ์ ํฉํ ์ ์์ต๋๋ค.
https://forums.xamarin.com/discussion/67854/android-menu-and-back-button-not-working
๋ณ๋ ํ๋ก์ ํธ์ ๋งํฌ์์ ๋ ๊ฐ์ง ์๋ฃจ์ ์ ๋ชจ๋ ์ป์์ต๋๋ค.
์๋ ํ์ธ์, ๋ฒ๊ฑฐ๋กญ๊ฒ ํด์ ์ฃ์กํฉ๋๋ค๋ง, ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์์์ด ์์๊น์? ะ.ะ
์ง๋ฌธ์ ์ ๋ฐ์ดํธํ๊ณ ์์ต๋๋ค :)
<ContentPage NavigationPage.HasBackButton="False">
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ์ด ์ค๋ ๋์ ์ ์๋ ์๋ฃจ์ ์ ์์ฉ ๊ฐ๋ฅ ์ด์์ด๋ฉฐ, ์๋ ๋์ ์ฌ๋๋ค์ด ์ด๊ฒ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
Xamarin ํ์ ๋๊ตฐ๊ฐ๊ฐ ์ด ์ํ์ ๋ํด ์ธ๊ธํ ์ ์๋์? ์ด๊ฒ์ ์ ๋ง ๋ง์ ์ฌ๋๋ค์๊ฒ ํฐ ๋ฌธ์ ์ ๋๋ค.
์ ธ์์ ์ด ์์ ์ ์ํํ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง Prism ๋๋ MVVMCross ์ ธ์ ํ์ฉํ๋ ๋ ํฐ ๋ง์ ์ฑ์ ๊ฒฝ์ฐ ์์ ํ ์ง์๋์ง ์์ผ๋ฏ๋ก ์ด๊ฒ์ด ์ฐ๋ฆฌ์๊ฒ ์ ๋ง ํ์ํ ๊ฒ์ ๋๋ค.
๊ฐ์ฌ ํด์
@akemper1์ ์ฌ๊ณผํ์ง๋ง ํ์ฌ ํน์ ์ ๋ฐ์ดํธ๋ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์์ง ์์์ง๋ง ๊ณต์ API์์ ํด๊ฒฐํ๊ธฐ ์ํด ์ฝ๊ฐ ์ง์ฐ๋์์ต๋๋ค. ์ฌ๊ธฐ์ ์ฌ์ฉ๋ API๋ก ์ ํ๋๋ ๋ค๋ก ๋ฒํผ์ ์ํฅ์ ๋ฏธ์น๋ ๋ณด๋ฅ ์ค์ธ ์ ธ PR์ด ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ด ๊ทธ๋ค์๊ฒ ํฐ ๋ฌธ์ ๋ผ๊ณ ๋งํ๋ ๋ง์ ์ฌ๋๋ค์ ๋์ํฉ๋๋ค.
๊ทธ๋๋ ๋ช ๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค. ๋๋ ๋จ์ง ์ฌ์ฉ์๊ฐ ๊ทธ๋ค์ด ์๋ ํ์ด์ง์์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ค๋๋ค๋ ๊ฒ์ "ํ์ธ"ํ ๋๊น์ง ์ฌ์ฉ์๊ฐ ๋๋์๊ฐ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค.
์ด๊ฒ์ ๋ํ ์์์ด ์์ต๋๊น? ์ ๋ง ์ค๋๋ง์ ๋๋ค :(
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฐ์ ์์๋ฅผ ๋์ด๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋๋ ๋๋๋ก ๋ ์ด์ ์๋ํ์ง ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ช ๋ ๋์ ๊ฐ์ง๊ณ ์์์ต๋๋ค.
ํ์ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋จ์ ์ด ์๋ ์ ๋ง ๋์ ํดํน์ด๊ธฐ๋ ํฉ๋๋ค. ๋ด ์ฌ์ฉ์ ์ง์ ํ์ ํ์ด์ง ๋ ๋๋ฌ๋ฅผ ์ ๊ฑฐํ๊ณ ํ๋ก์ธ์ค์์ ์ผ๋ถ ๋ฌธ์ ๋ฅผ ์์ ํ๊ณ ์ถ์ต๋๋ค.