gpt4 book ai didi

ios - 在显示 UIAlertView 之前检查消息是否为空

转载 作者:行者123 更新时间:2023-11-29 13:08:39 25 4
gpt4 key购买 nike

UIAlertView在代码中被广泛使用。

我想在显示之前检查所有警报 View 消息。

我在UIAlertView类中写了一个方法。

问题:

  • 有没有一种方法可以在一个地方解决这个问题,所有的 alertview 都会在显示它之前自动调用它。 (例如——比如重写某些方法)

注意 - 我已经有了一个方法,但我不想在所有地方手动更改代码,相反,如果可能的话,我正在寻找一个圆滑的解决方案,这样我就可以在一个地方进行更改(比如覆盖一个方法)

最佳答案

在 UIAlertView 上创建一个类别并提供一个方法,该方法首先检查消息是否存在,然后显示:

@implementation UIAlertView (OnlyShowIfMessageExists)

- (void)override_show
{
if(self.message.length)
{
[self override_show];
}
}

它正在调用 override_show 而不是 show,因为这些方法将被调配。

在类别中也实现 +(void)load 方法,并使用 show 方法调整你的方法:

+(void)load
{
SEL origSel = @selector(show);
SEL overrideSel = @selector(override_show);

Method origMethod = class_getInstanceMethod(UIAlertView.class, origSel);
Method overrideMethod = class_getInstanceMethod(UIAlertView.class, overrideSel);

if(class_addMethod(UIAlertView.class, origSel, method_getImplementation(overrideMethod), method_getTypeEncoding(overrideMethod)))
{
class_replaceMethod(UIAlertView.class, overrideSel, method_getImplementation(origMethod), method_getTypeEncoding(origMethod));
}
else
{
method_exchangeImplementations(origMethod, overrideMethod);
}
}

@end

现在,所有显示在 UIAlertView 上的调用都将使用您的方法 override_show。

http://www.mikeash.com/pyblog/friday-qa-2010-01-29-method-replacement-for-fun-and-profit.html

关于ios - 在显示 UIAlertView 之前检查消息是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17921539/

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