2012-08-13 5 views
0

버튼이있는 UITableViewCell 하위 클래스에서이 IBAction을 트리거하려고합니다. 나는 때문에이 코드 줄에 TWTweetComposeViewController을 얻을 수 없습니다테이블 뷰 셀 안의 UIButton에서 Tweeting하기 - 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

버튼을 누를 때이 함수가 호출됩니까? –

+0

무엇이 보이십니까? 오류? 트윗 시트가 없습니다. – rdelmar

+0

트위터 시트가 나타나지 않습니다. 함수가 호출되고 있습니다. 사실이 메서드를 액세스하려고하면 UIViewController가 작동합니다. UITableViewCell에서 시도했을 때 트윗 시트가 팝업되지 않습니다. –

답변

0

@rdelmar가 언급 한 바와 같이, presentModalViewController 그래서 당신은 UITableViewCell의 하위 클래스에서 [self presentModalViewController:tweetSheet animated:YES]를 호출해서는 안 UIViewController하지 UITableViewCell하는 방법입니다.

대신에 UITableViewCell 서브 클래스는 tweetSheet을 표시 할 뷰 뷰 컨트롤러 (예 : UITableViewController의 하위 클래스)에 대해보기 컨트롤러에 알려야합니다. 이 작업을 수행하는 한 가지 방법은 사용자가 무언가를 트윗하려고 할 때마다 알려주는 UITableViewCell 하위 클래스에 대리자를 추가하는 것입니다. 이 대리자를 UITableViewController 하위 클래스로 설정하고 시트를 제시하여 트윗 요청을 처리하도록합니다. 둘러싸는 UITableView의 대리인은 아마 이미 UITableViewController 서브 클래스이기 때문에 같은 일을 수행 할 수있는 빠르고 더러운 방법은 다음과 같은 뭔가가있는 라인을 변경 할 수 있습니다 :

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

참고 : presentModalViewController:animated: 인을 iOS 5에서는 지원 중단되며 presentViewController:animated:completion:은 직접 교체로 사용하는 것이 좋습니다.

관련 문제