我试图从内部有按钮的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];
}
}
答案 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:
作为直接替换。