以编程方式在索引处调用UIAlertView clickedbutton

时间:2013-02-19 05:46:04

标签: iphone objective-c ios5 ios6

我试图以编程方式调用UIAlertView的委托方法。这是代码:

if([vc respondsToSelector:@selector(alertView:clickedButtonAtIndex:)]) {
        // Manually invoke the alert view button handler
        [(id <UIAlertViewDelegate>)vc alertView:nil
                           clickedButtonAtIndex:0];
    }

在iOS5.0上运行正常,但在iOS6.0上运行不正常,欢迎提出意见或建议:)

以下是完整的详细方法:

TWTweetComposeViewController *vc = [[[TWTweetComposeViewController alloc] init]autorelease];
    // Settin The Initial Text
    [vc setInitialText:status];
    [vc setCompletionHandler:^(TWTweetComposeViewControllerResult result) {
        if(result == TWTweetComposeViewControllerResultDone) {

            NSLog(@"Tweeted Sucessfully");
            }
    }];
    if([delegate isKindOfClass:[UIViewController class]]){
        [(UIViewController *)delegate presentModalViewController:vc animated:YES];
    }
      //alertView:clickedButtonAtIndex:
    if([vc respondsToSelector:@selector(alertView:clickedButtonAtIndex:)]) {
        // Manually invoke the alert view button handler
        [(id <UIAlertViewDelegate>)vc alertView:nil
                           clickedButtonAtIndex:0];
    }
}

5 个答案:

答案 0 :(得分:2)

在您的代码中,只需使用您的alertview对象名称提供警报视图,如bellow ..

[(id <UIAlertViewDelegate>)vc alertView:yourAlertView
                           clickedButtonAtIndex:0];

否则只要试试这个波纹管代码..

   id<UIAlertViewDelegate> delegate = yourAlertView.delegate;
    yourAlertView.delegate = nil;
    [delegate alertView:yourAlertView clickedButtonAtIndex:0];

请参阅此链接以获取有关它的其他选项..

why-doesnt-dismisswithclickedbuttonindex-ever-call-clickedbuttonatindex

答案 1 :(得分:2)

直接调用委托方法是不好的做法。 UIAlertView有一个名为dismissWithClickedButtonIndex:animated:的方法。如果你打电话,UIAlertViewDelegate方法alertView:willDismissWithButtonIndex:和。{ 假设您的委托设置正确,将调用alertView:didDismissWithButtonIndex:

答案 2 :(得分:1)

您可以使用此委托,这对您有用..

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex;  

答案 3 :(得分:1)

在iOS 6中实现警报视图没有这些差异。您可以使用此委托方法轻松完成任务 - :

(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex;  

试试这个,然后让我们知道你在控制台中得到什么样的警告......

答案 4 :(得分:0)

在IOS6中不推荐使用TWTeetComposeViewController。请尝试使用DETweet。 :)也适用于iOS 6。 :)