Прежде всего, я новичок в программировании, пожалуйста, медведь со мной, ребята. Я работаю над 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? Может быть, альтернативный код?
Xcode 5? Если это так, добавьте точку останова исключения, чтобы увидеть строку, в которой происходит ошибка (соответственно ближайшая строка в стеке вызовов, для которой имеется исходный код). – LearnCocos2D
Привет. Я использую Xcode 6. Я попытался использовать точку прерывания исключения и, похоже, отвел меня в ту же строку, подробно описанную в вопросе. Предложение Джерома ниже немного меня осветил. Я не знаю, можете ли вы знать какое-либо решение в соответствии с отображением UIActivityViewController внутри UIPopoverController? – KaybeSir