gpt4 book ai didi

iphone - 如何检测 View Controller 何时被关闭?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:39 27 4
gpt4 key购买 nike

如何在我的 map View (主) Controller 中检测到细节 View Controller 已被关闭?我有一个带有图钉和注释的 map View 。当在任何注释上点击 rightCalloutAccessoryView 时,将通过 performSegueWithIdentifier 调用模态详细 View Controller 。顺便说一句,我不知道这是否正确,但是主视图 Controller 和详细 View Controller 由导航 Controller 附加。

我的目标是根据详细 View Controller 上的用户操作在 map View (主视图)上采取有条件的操作。具体来说,如果他们点击了删除图钉功能,我想在控制返回到 map View 时删除图钉。如果他们只是点击“完成”按钮,那么我希望图钉和注释保留在屏幕上。

以我有限的知识,我可以用下面的第二行删除图钉,但问题是我可以看到图钉和注释在点击 rightCalloutAccessorView 图标之后和显示详细信息 View 之前立即被删除.所以这意味着如果用户随后点击详细信息屏幕上的完成按钮,他们将返回到 map View ,并且已经删除了图钉和注释。我只希望在用户点击删除按钮时将其删除。

   [self performSegueWithIdentifier:@"PinDetail" sender:self];
[self.mapView removeAnnotation:MA];

所以我的问题是:

  1. 我应该把 removeAnnotation 代码放在哪里?在当前位置,销钉的移除甚至在详细 View 出现之前就已发生。
  2. 如何检测是否点击了详细 View 上的删除按钮?

谢谢。

最佳答案

您可以使用委托(delegate)根据详细 View 中的操作对 mapview 执行操作。在 performSegueWithIndentifier 中,您可以将详细 View 指定为 mapview 的委托(delegate),它会为您执行操作。

或者您可以为详细 View 设置目标和选择器,当在详细 View 中发生任何操作时,您可以调用目标为 map View 的选择器,如下所示:1.在performSegue方法中设置target如下:

 [theController setTarget:self andSelector:@selector(performAction)];

theController 是您的目标 View Controller ,即详细 View Controller 。

2.详细查看 Controller .h文件

 id m_Target;
SEL m_Selector;

详细查看controller.m文件:

- (void)setTarget:(id)inTarget andSelector:(SEL)inSelector
{
m_Target = inTarget;
m_Selector = inSelector;
}

3.关闭详细 View 调用之前

 if ([m_Target respondsToSelector:m_Selector]) {
[m_Target performSelector:m_Selector withObject:nil];
}

4.在 map View Controller .m文件中定义performAction

关于iphone - 如何检测 View Controller 何时被关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10943650/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com