从uitableviewcell中的UIButton发推文 - iOS

时间:2012-08-13 03:10:37

标签: ios xcode uitableview

我试图从内部有按钮的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];
  }

}

1 个答案:

答案 0 :(得分:0)

正如@rdelmar所提到的,presentModalViewController是一种UIViewController而不是UITableViewCell的方法,因此您不应该从[self presentModalViewController:tweetSheet animated:YES]的子类中调用UITableViewCell。< / p>

相反,您的UITableViewCell子类应该通知视图控制器其表视图(可能是UITableViewController的子类)以呈现tweetSheet。实现此目的的一种方法是向您的UITableViewCell子类添加一个委托,每当用户想要发布推文时都会通知该委托。将此委托设置为您的UITableViewController子类,并通过显示表单来处理推文请求。封闭式UITableView的委托可能已经是您的UITableViewController子类,因此快速肮脏的方式来完成同样的事情可能是将您所拥有的行更改为以下内容:

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

注意:在iOS 5中不推荐使用presentModalViewController:animated:,首选presentViewController:animated:completion:作为直接替换。