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 が述べたように、はnotpresentModalViewControllerのメソッドであるため、 のサブクラスから呼び出すべきではありません。UIViewControllerUITableViewCell[self presentModalViewController:tweetSheet animated:YES]UITableViewCell

代わりに、UITableViewCellサブクラスは、そのテーブル ビュー (のサブクラスである可能性が高いUITableViewController) をビュー コントローラーに通知して、tweetSheet. これを行う 1 つの方法は、UITableViewCellサブクラスにデリゲートを追加して、ユーザーが何かをツイートしたいときに通知を受けるようにすることです。このデリゲートをUITableViewControllerサブクラスに設定し、シートを提示してツイート リクエストを処理させます。囲んでいるデリゲートUITableViewはおそらく既にあなたのUITableViewControllerサブクラスであるため、同じことを行うための速くて汚い方法は、必要な行を次のように変更することです。

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

注:presentModalViewController:animated:は iOS 5 で廃止さpresentViewController:animated:completion:れ、直接の代替として優先されます。

于 2012-08-13T06:32:14.280 に答える