UI控件在iOS中的状态管理的设计模式

Rya*_*yan 9 iphone user-interface objective-c ios

与此问题类似,但我正在寻找通用解决方案或设计模式或框架.

问:如何在我的iOS应用程序中自动将状态管理添加到所有UI控件中,而无需重写现有控件的类?

例:

例如,当我点击a时UIButton,它将创建一个新的UIWebViewGoogle主页.这很容易,但是当用户有时..单击该按钮出现问题只是太快了,于是两个web视图就会显示出来.

要解决这个问题,我需要创建一个包含webview的单例类,并且有一个状态变量isOpended,如果是,则重用现有的webview而不是创建一个新的webview.

但问题是:如果我也想在其他控件中使用这种行为,那么我需要创建许多单例类..我只是想如果有更好的方法来处理这个没有新的重新发明轮子.

谢谢.

Jef*_*mas 9

我想你在这里解决了错误的问题.为什么不在UIWebView完成处理之前禁用该按钮.这样用户就无法点击两次.

- (IBAction)showMapHomepage:(UIButton*)sender
{
    sender.enabled = NO;
    [self taskThatTakesALongTimeWithCompletion:^{
        sender.enabled = YES;
        // Finish processing
    }];
}
Run Code Online (Sandbox Code Playgroud)