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

问题描述 投票:2回答:5

我试图以编程方式调用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];
    }
}
iphone objective-c ios5 ios6
5个回答
2
投票

在您的代码中,只需使用您的uialertview对象名称提供警报视图,如下图所示。

[(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


2
投票

直接调用委托方法是不好的做法。 UIAlertView有一种叫做dismissWithClickedButtonIndex:animated:的方法。如果你这样称呼,那么将调用UIAlertViewDelegate方法alertView:willDismissWithButtonIndex:alertView:didDismissWithButtonIndex:,假设您的委托设置正确。


1
投票

您可以使用此委托,这将为您工作..

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

1
投票

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.