我试图以编程方式调用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];
}
}
答案 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。 :)