2014-12-10 2 views
-1

Прежде всего, я новичок в программировании, пожалуйста, медведь со мной, ребята. Я работаю над iOS-игрой, созданной с использованием движка Cocos2Dx в Xcode. В игре есть кнопка Share, которая используется для обмена баллами. Кажется, что кнопка работает с iPhone, но все время падает на iPad. Xcode указывает на этой линии каждый раз, когда он выходит из строя на IPad:Как разрешить сбой в этой строке в Xcode: int retVal = UIApplicationMain (argc, argv, nil, @ "AppController");

int retVal = UIApplicationMain(argc, argv, nil, @"AppController");

я понял, этот вопрос возник после того, как я изменил другой кусок кода, чтобы реализовать функциональные кнопки акций. Код, который я изменил, находится в функции ниже.

- (void) displayShare:(NSString*)strText imageIdx:(int)nIdx URL:(NSString*)strURL 
{ 
    UIActivityViewController *activityView; 

    if(nIdx >= 0) 
    { 
     NSString* str = [NSString stringWithFormat:@"new-arc-%d-ipad.png", nIdx+1]; 
     UIImage* image = [UIImage imageNamed:str]; 
     activityView = [[UIActivityViewController alloc] initWithActivityItems:@[strText, image, [NSURL URLWithString:strURL]] applicationActivities:nil]; 
    } 
    else 
     activityView = [[UIActivityViewController alloc] initWithActivityItems:@[strText, [NSURL URLWithString:strURL]] applicationActivities:nil]; 

    activityView.excludedActivityTypes = @[UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, UIActivityTypePrint]; 

    // [self.viewController presentViewController:activityView animated:YES completion:nil]; 
[window.rootViewController presentViewController:activityView animated:YES completion:nil]; 


    [activityView setCompletionHandler:^(NSString *activityType, BOOL completed) { 
     NSLog(@"completed dialog - activity: %@ - finished flag: %d", activityType, completed); 

     if(completed) 
     { 
      if([activityType isEqualToString: @"com.apple.UIKit.activity.PostToFacebook"]) 
      { 
       g_bArchiveMark[19] = true; 
       AppSettings::setArchieveInfo(19); 
      } 
      else if([activityType isEqualToString: @"com.apple.UIKit.activity.PostToTwitter"]) 
      { 
       g_bArchiveMark[20] = true; 
       AppSettings::setArchieveInfo(20); 

      } 
     } 
    }]; 

Линия я изменил это один (который находится в функции выше):

[window.rootViewController presentViewController:activityView animated:YES completion:nil]; 

Я хотел бы знать, почему эта линия работает на iPhone устройства, но не на IPad? И как я могу решить эту проблему для работы с iPad? Может быть, альтернативный код?

+0

Xcode 5? Если это так, добавьте точку останова исключения, чтобы увидеть строку, в которой происходит ошибка (соответственно ближайшая строка в стеке вызовов, для которой имеется исходный код). – LearnCocos2D

+0

Привет. Я использую Xcode 6. Я попытался использовать точку прерывания исключения и, похоже, отвел меня в ту же строку, подробно описанную в вопросе. Предложение Джерома ниже немного меня осветил. Я не знаю, можете ли вы знать какое-либо решение в соответствии с отображением UIActivityViewController внутри UIPopoverController? – KaybeSir

ответ

0

Посмотрите на UIActivity activityViewController being presented modally on iPad instead of in popover

На IPad UIActivityViewController должен отображаться внутри UIPopoverController

+0

Привет, Джером. Спасибо за это предложение. Это помогло мне найти больше информации для решения проблемы. Поэтому я придумал временное решение, чтобы хотя бы разрешить работу кода на iPhone. Итак, теперь мое приложение проверяет, работает ли код на iPhone в первую очередь. Я все еще хочу узнать, как отобразить UIActivityViewController в UIPopoverController. В качестве новичка для меня удовольствие - это рыть, чтобы найти фрагменты кода, которые будут работать. Я буду приветствовать любые дальнейшие предложения. благодаря – KaybeSir

Смежные вопросы