Невозможно опубликовать твиты с другого Viewcontroller - PullRequest
0 голосов
/ 09 июля 2011

Я использую Outh для добавления Twitter в мое приложение.

Ниже представлены два UIViewController для входа в систему и публикации твитов соответственно.

1.SettingViewcontroller 2.DetailViewcontroller

Этокод для входа в твиттер с помощью SettingViewcontroller.

- (void)switchAction1:(UISwitch*)sender
   {
   if (sender.on)
    {
           if(_engine) 
       return;

      _engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate:self]
   _engine.consumerKey = @"###";
    _engine.consumerSecret = @"###"; 

   UIViewController *controller =[SA_OAuthTwitterController  controllerToEnterCredentialsWithTwitterEngine: _engine delegate: self];

   DetailViewcontroller *detobj=[[DetailViewcontroller alloc]init];

 detobj.detail_enginne=_engine; 

   [detobj release];

    [self presentModalViewController: controller animated: YES];
   }
  if(!sender.on)
  { 

NSLog(@"Logout section");

    }
}

И в DetailViewcontroller при нажатии кнопки листа действия будет выполнен следующий код.

    if ([detail_enginne isAuthorized]) 
    { 
      NSLog(@"engine availble");

               NSString *str=@"hai twitterrrrrrrrrrr";

             [detail_enginne sendUpdate:str];

    }
    else{
        NSLog(@"Engine not availabele");
             }  
}

Здесь я не могу отправить твиты из DetailViewcontroller.

Как этого добиться?

Обновлено

Iam Loding Подробный вид с использованием ViewDidload, а не Nib.

Detailview.m

это метод actionSheet для отправки данных в Facebook и Twitter из DetailView

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

    // For  facebook
if(buttonIndex == 0)
{


    if ([session resume])  {


        [self postToWall];

        NSLog(@"Post to wall");

    }
    else {

        self.loginDialog = nil;
        _loginDialog = [[FBLoginDialog alloc] init];    
        [_loginDialog show];

    }


}                           

//  For twittter
  if(buttonIndex == 1)
  {         
    if(detail_enginne!=nil) 
    { 

        NSString *str=@" hai twitter  ";
        [detail_enginne sendUpdate:str];

    }
    else 
    {
        NSLog(@"Not availabele");

    }
}
if(buttonIndex == 2)
{

    NSLog(@"cancel button ");


}
   }

1 Ответ

0 голосов
/ 12 июля 2011

Первое, где вы получаете учетные данные пользователя?

Я не знаю, для какой цели вы проверяете индекс кнопки. Вы тоже так пытаетесь,

if ([detail_enginne isAuthorized])
{
  NSLog(@"engine availble");
  NSString *str=@"hai twitterrrrrrrrrrr";
  [detail_enginne sendUpdate:str];
}
 else
{
   NSLog(@"Engine not availabele");
}  

Из вашего кода

    - (void)switchAction1:(UISwitch*)sender
       {
       if (sender.on)
        {
               if(_engine) 
           return;

          _engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate:self]
         _engine.consumerKey = @"###";
          _engine.consumerSecret = @"###"; 

         UIViewController *controller =[SA_OAuthTwitterController  controllerToEnterCredentialsWithTwitterEngine: _engine delegate: self];
     if(controller)
{
    [self presentModalViewController: controller animated: YES]; //Here You will show your login screen twitter
}


//After getting credentials , You do this

   DetailViewcontroller *detobj=[[DetailViewcontroller alloc]init];

     detobj.detail_enginne=_engine;  // this **detobj** should be used for presenting detailView

       [detobj release];
       }
      if(!sender.on)
      { 

    NSLog(@"Logout section");

        }
    }
...