Увольнение 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];
Я застреваю на виде с камеры, нажимая кнопку "использовать", и ничего не происходит, что заставляет меня думать, что это каким-то образом заблокировало все мои потоки.