2012-08-13 29 views
0

我試圖從UITableViewCell子類中觸發此IBAction,子類裏面有按鈕。我不能讓TWTweetComposeViewController由於這行代碼:從tableviewcell中的UIButton發佈 - iOS

[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

這個函數被按下按鈕調用嗎? – 2012-08-13 03:28:12

+0

你看到了什麼?一個錯誤?沒有tweetSheet彈出? – rdelmar 2012-08-13 03:28:18

+0

沒有tweetsheet彈出。該函數正在被調用。事實上,當我嘗試訪問這個方法的UIViewController它的工作原理。當我從UITableViewCell嘗試時,推文表不會彈出。 – 2012-08-13 03:31:52

回答

0

正如@rdelmar提到,presentModalViewControllerUIViewControllerUITableViewCell的方法,因此你不能從你的UITableViewCell子類調用[self presentModalViewController:tweetSheet animated:YES]

而不是你的UITableViewCell子類都應該通知其表視圖的視圖控制器(可能是的UITableViewController子類)呈現tweetSheet。做到這一點的一種方法是向您的UITableViewCell子類中添加一個委託,該委派在用戶想要發佈某些內容時得到通知。將此代理設置爲您的UITableViewController子類,並通過呈現表來處理推文請求。封閉UITableView的代表很可能已經在你的UITableViewController子類,因此快速的一個骯髒的方式來完成同樣的事情可能會做改變,你必須像下面這樣的行:

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

注:presentModalViewController:animated:是在iOS 5中不推薦使用,presentViewController:animated:completion:作爲直接替代品是首選。