UIAlertView无法在iphone上显示

时间:2012-09-25 16:32:17

标签: objective-c ios uialertview

我创建了一个显示alertview的通用方法方法。我已附上我的代码以供审核。 我试图验证三个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];

我这样做是为了查看警报视图是否实际显示为快速可见。不,根据我的日志,程序会持续5秒,然后继续使用程序逻辑。我也用uialertview取代了 一个uiactionsheet,看看它是否会显示uialertview没有的位置。再一次,nope,它们都不会显示在模拟器屏幕上。

这是我的.h文件中的界面声明:
    @interface BeginningScene:UIViewController,     (小于)UIActionSheetDelegate,     UITextViewDelegate,     UIAlertViewDelegate(大于)

再次感谢您的帮助,我们将非常感谢任何想法。

2 个答案:

答案 0 :(得分:2)

你确定这是在主线程上运行吗? 调用sendErrorMessage

时尝试使用它
[self performSelectorOnMainThread:@selector(sendErrorMessage)];

跳过return语句,没用。

无论如何,试试这段代码并将方法复制到你的头文件中,注意小写字母S,只是一个偏好。

- (void)sendErrorMessage
{
    UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle:@"Title"
                      message:@"message"
                      delegate:nil cancelButtonTitle:
                      @"OK"
                      otherButtonTitles:nil];
[alert show];
[alert release]; // if you are not using ARC
}

答案 1 :(得分:0)

您可以在将显示UIAlertView(.h头文件)的类中尝试以下内容:

@interface ViewController : UIViewController <UIAlertViewDelegate>

然后,在.m实现中,在创建UIAlertView时将委托设置为self

    UIAlertView *alert = [[UIAlertView alloc]
                     initWithTitle:self.alertViewTitleText
                     message:self.alertViewMessageText
                     delegate:self cancelButtonTitle:
                     self.alertViewCancelButtonText
                     otherButtonTitles:nil];

希望这有帮助。