Увольнение imagePickerController из UITabBarController и переключение вкладок вызывает исключение NSRangeException

У меня есть контроллер панели вкладок, где одна из вкладок просто поднимает камеру. Как только пользователь не делает снимки, я хочу, чтобы он перешел на другую вкладку, где перечислены фотографии, которые они сделали до сих пор (сохраненные в каталоге приложения).

Вот как я отклоняю камеру:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];
    UIImage *originalImage;

    // Handle a still image capture
    if (CFStringCompare ((CFStringRef) mediaType, kUTTypeImage, 0)
        == kCFCompareEqualTo) {

        originalImage = (UIImage *) [info objectForKey:
                                     UIImagePickerControllerOriginalImage];

        NSData* imageData = UIImagePNGRepresentation(originalImage);

        //Save the file to documents directory
        NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                             NSUserDomainMask, YES);
        NSString* documentsDirectory = [paths objectAtIndex:0];
        NSString* filename = [NSString stringWithFormat:@"img_%@.png", [[NSDate date] description]];
        NSString* path = [documentsDirectory stringByAppendingPathComponent:filename];
        [imageData writeToFile:path atomically:YES];
        [newPicturesPaths addObject:path];

        if(hasConnected) [self upload];
        [self dismissViewControllerAnimated:YES completion:^(void) { [self goToPendingView]; }]; // The debugger puts the crash on this line but AFTER goToPendingView has finished!
        cameraOn = NO;
    }
}

И вот как я готовлю таблицу и переключаю выбранную вкладку контроллера панели вкладок:

- (void)goToPendingView
{
    [self buildPendingList];
    [(PLEListViewController*)[self.viewControllers objectAtIndex:2] setList:pendingList]; //pendingList is an array
    [self setSelectedIndex:2];
} // The debugger comes this far without a crash

Ошибка...

*** Завершение работы приложения из-за невыполненной исключительной ситуации 'NSRangeException', причина: '*** -[__NSCFConstantString substringToIndex:]: диапазон или индекс вне границ' *** Стек первого вызова вызова: (0x3a7173e7 0x395a3963 0x3a717307 0x3a9454547 0x93939x1x3939x13939x1x3939x1 0x39a417ff 0x399fd897 0x37f004eb 0x37f0008d 0x37f00fb1 0x37f0099b 0x37f007ad 0x39a0390f 0x3a6ec941 0x3a6eac39 0x3a6eaf93 0x3a65e23d 03 03 0a 0 0 0 5 0 0 0 0 5 0 0 5 0 0 0 5 5 0 0 5 5 0 39 0

Любая помощь, определяющая, что вызывает это?

РЕДАКТИРОВАТЬ: я забыл упомянуть об этом. Причина, по которой я поместил [self goToPendingView] в блок завершения после закрытия камеры, заключалась в том, что если я сделаю это...

    if(hasConnected) [self upload];
    [self dismissViewControllerAnimated:YES completion:nil];
    cameraOn = NO;
    [self goToPendingView];

Я застреваю на виде с камеры, нажимая кнопку "использовать", и ничего не происходит, что заставляет меня думать, что это каким-то образом заблокировало все мои потоки.

0 ответов

Другие вопросы по тегам