我在Monotuch iOS应用程序中使用以下代码创建位置搜索机制:
public override void ViewDidLoad ()
{
NavigationItem .TitleView = LocationSearchBar ;
LocationSearchBar .OnEditingStarted += delegate {
if(lSAutoCompleteScreen ==null)
lSAutoCompleteScreen = new LSAutoCompleteScreen ();
lSAutoCompleteScreen .DefaultText = LocationSearchBar .Text;
this.NavigationController .PushViewController (lSAutoCompleteScreen,true );
};
}
第一次,代码工作正常。当用户开始编辑搜索栏时,应用程序显示
lSAutoCompleteScreen
。用户搜索,然后用户搜索回到主视图。但是问题出在现在。当您再次开始编辑时。现在,OnEditingStarted
事件将触发两次!因此应用尝试将lSAutoCompleteScreen
添加到NavigationController
两次。他第二次尝试添加应用程序将崩溃。因为添加一个已经存在于堆栈中的viewcontroller无效。所以问题是,为什么这个事件应该触发两次?以及为什么仅在iOS7中事件触发两次。在iOS6中,它只会触发一次。
最佳答案
每次加载View时,都要向OnEditingStarted添加一个处理程序。请尝试在类构造函数中分配处理程序,以便仅分配一次。
关于ios - OnEditingStarted在iOS 7中提高了两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21353382/