0

我试图IBAction从一个UITableViewCell内部有按钮的子类中触发它。TWTweetComposeViewController由于这行代码, 我无法得到:

[self presentModalViewController:tweetSheet animated:YES];

是否可以通过按单元格上的按钮打开推文窗口?

- (IBAction)tweetTapped:(id)sender { 
{
if ([TWTweetComposeViewController canSendTweet])
{
    TWTweetComposeViewController *tweetSheet = 
        [[TWTweetComposeViewController alloc] init];
    [tweetSheet setInitialText:
        @"Tweeting from iOS 5 By Tutorials! :)"];
    [self presentModalViewController:tweetSheet animated:YES];
}
else
{
    UIAlertView *alertView = [[UIAlertView alloc] 
        initWithTitle:@"Sorry"                                                             
        message:@"You can't send a tweet right now, make sure  
            your device has an internet connection and you have 
            at least one Twitter account setup"                                                          
        delegate:self                                              
        cancelButtonTitle:@"OK"                                                   
        otherButtonTitles:nil];
    [alertView show];
  }

}
4

1 回答 1

0

正如@rdelmar 提到的,presentModalViewController是一种UIViewControllernot的方法,UITableViewCell所以你不应该[self presentModalViewController:tweetSheet animated:YES]从你的子类调用UITableViewCell.

相反,您的UITableViewCell子类应该通知视图控制器其表视图(可能是 的子类UITableViewController)来呈现tweetSheet. 一种方法是向您的UITableViewCell子类添加一个委托,当用户想要发推文时,该委托就会被通知。将此委托设置为您的UITableViewController子类,并通过显示工作表让它处理推文请求。封闭的代表UITableView可能已经是您的UITableViewController子类,因此完成相同事情的一种快速而肮脏的方法可能是将您必须的行更改为以下内容:

[self.superview.delegate presentModalViewController:tweetSheet animated:YES];

注意:presentModalViewController:animated:在 iOS 5 中已弃用,presentViewController:animated:completion:最好直接替代。

于 2012-08-13T06:32:14.280 回答