2012-10-31 88 views
2

我有一个iPhone应用程序发送电子邮件。如果“To:”地址未设置,则显示警报(UIAlertView)。目前,我不检查用户点击OK,我只是继续我的快乐! :d如何在ViewController已经有委托时设置委托?

警觉攻确定,当我收到以下错误:

wait_fences:未能收到回复:10004003

我相信这是因为我不处理的攻丝的确定,它仍然显示应用程序正在做其他事情时。因此,在SO和谷歌做了一些研究之后,看来我必须有这样的:

- (void) Alert: (NSString *) title andData: (NSString *) errorMsg { 

    UIAlertView *alert = [[UIAlertView alloc] 
          initWithTitle: title 
          message: errorMsg 
          delegate:nil 
          cancelButtonTitle: @"OK" 
          otherButtonTitles: nil]; 
    [alert show]; 


    return; 

} 

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    NSLog(@"button was pressed"); 
} 

我的问题是,我无法弄清楚如何建立委托这一点。我已经有一个委托:

@interface ReportViewController : UIViewController <UIWebViewDelegate> { 

如何设置委托所以OK按钮的自来水进行处理,从而消除了错误?

+1

我会推荐真正理解委托设计模式,而不是仅仅解决这个问题。这是你理解最有用的东西之一。 https://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html – rooster117

回答

4

在尖括号内,您可以提供逗号分隔的协议列表。

@interface ReportViewController : UIViewController <UIWebViewDelegate, UIAlertViewDelegate> { 

现在你可以实现两套方法。并且不要忘记将警报视图的代理设置为self

+0

我编辑了我的问题以显示相关的代码。代表是我最薄弱的专业领域之一;因此,我不确定你指的是什么。你能否详细说明一下? – SpokaneDude

+0

我给你改变了@interface行。当你创建alert视图时,将参数'self'传递给'delegate:'而不是'nil'。 – rmaddy

+0

知道了...谢谢你...我感谢你的时间... – SpokaneDude

1

根据代码'delegate:nil',您的代理看起来像零。您需要将其更改为'delegate:self'