0

刚刚注意到我的应用程序有些奇怪。每当我点击一个条形按钮打开一个弹出视图控制器时,如果我再次点击它,它只会打开该 vc 的另一个实例(我可以继续这样做)。

我该如何阻止这个?我是否应该在布尔值处于活动状态时使用布尔值来禁用按钮,然后在用户通过其他方式关闭 VC 时以某种方式重置它(例如点击不是同一个 VC 的部分屏幕)?

尝试了布尔建议:

在我的 prepareForSegue 方法中,我有以下内容:

  if(isActive==false){
        InformationViewController *informationViewController = [segue destinationViewController];

        informationViewController.delegate = self;
            isActive = true;
        }
4

3 回答 3

1

这可能不再重要,但我会推荐您提出的布尔解决方案,只需进行一次修改。如果你移动

isActive = true;

viewWillAppear 的声明,我很确定该按钮将保持禁用状态,直到模态视图关闭。

于 2014-01-21T03:22:35.340 回答
0

是的,我建议使用全局布尔值。按下按钮时将变量设置为 true。

在创建实例的函数中,在创建实例之前检查以确保变量为 false。

删除实例后,将变量设置回 false。

伪代码(在 C++ 中):

bool isActive = false;
void CreateInstance()
{
    if (isActive == false)
    {
        -- code
        isActive = true;
    }
}

void InstanceDestroyed()
{
    -- code
    isActive = false;
}
于 2012-08-28T22:07:00.607 回答
0

一旦视图出现,您可以将按钮设置为禁用,然后在弹出视图中添加代码:

a)一旦弹出窗口被持有按钮的视图“捕获”并重新启用按钮,就使用通知中心发送通知,或者......

b) 一旦弹出视图被解除,使用协议使用委托模式来处理按钮的重新启用。

这些方法可能需要更多的工作,但我尽量不在 MVC 模式中使用任何全局变量。

于 2012-08-28T22:15:47.303 回答