【发布时间】:2012-09-28 09:33:28
【问题描述】:
我创建了一个通用方法方法来显示警报视图。我已附加我的代码以供审查。 我正在尝试验证三个 uitextfields,如果无效,请将相关信息放入 uialertview 方法中使用的实例变量中。您可以看到我在代码中散布了大量的 nslog 语句。方法开头和结尾的 nslog 都显示发生的错误的相关信息。当我点击模拟器屏幕上的按钮时,它不会显示任何消息,但屏幕背景是浅灰色的,会变成深灰色。
代码如下:
- (void)SendErrorMessage
{
NSLog(@"Starting SendErrorMessage");
NSLog(@"initWithTitle = %@", self.alertViewTitleText);
NSLog(@"message = %@", self.alertViewMessageText);
NSLog(@"cancelButtonTitle = %@", self.alertViewCancelButtonText);
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:self.alertViewTitleText
message:self.alertViewMessageText
delegate:nil cancelButtonTitle:
self.alertViewCancelButtonText
otherButtonTitles:nil];
[alert show];
NSLog(@"Finished SendErrorMessage");
return;
}
对此的任何帮助将不胜感激。
好的,
我现在真的很困惑。我进入代码并在 [alert show] 下方添加了以下代码: // 阻塞 5 秒 [NSThread sleepForTimeInterval:5.0];
我这样做是为了查看 alertview 是否真的被快速显示。不,根据我的日志,程序坐了 5 秒钟,然后继续执行程序逻辑。我还替换了uialertview 一个 uiactionsheet 以查看它是否会显示 uialertview 不显示的位置。再一次,不,它们都不会显示在模拟器屏幕上。
这是我的 .h 文件中的接口语句:
@interfaceBeginningScene:UIViewController,
(小于)UIActionSheetDelegate,
UITextViewDelegate,
UIAlertViewDelegate(大于)
再次感谢您的帮助,我们将不胜感激。
【问题讨论】:
-
你能打印出你的 NSLogs
-
您的应用程序此时会崩溃吗?警报视图显示在半透明背景上(屏幕中间较亮),因此听起来好像显示了此背景,但实际警报视图本身并未显示,这可能是因为应用程序在该点崩溃.
-
你确定这个方法是从主线程调用的吗?无论如何,您可能希望将代码的 UIAlert 部分放在主线程上运行,以便可以从后台线程调用该方法并且警报仍然有效。
-
从真正简单的开始。在最前面的视图控制器中尝试显示“Hello World”警报。如果可行,那么在视图控制器的同一点尝试您的课程。这会告诉你问题出在哪里。
标签: objective-c ios uialertview