PhotosTableViewController

PhotosTableViewController

我需要在CameraSessionView之间传递照片的NSMutableArray;如何将相机拍摄的照片存储在NSMutableArray上,以及TableViewController如何将这些照片上传到DropBox。我正在使用委托和协议,但是我尝试过的所有方法都失败了。
任何人都可以帮助我。我认为我做错了一些小事情。
我给你看一些代码:

CameraSessionView.h

@class CameraSessionView;
@protocol CameraSessionViewDelegate <NSObject>
@optional
-(void)uploadPhotosFromCamera:(NSMutableArray*)photos;
@end

@property (nonatomic, weak) id <CameraSessionViewDelegate> delegado;


CameraSessionView.m

@property (nonatomic, strong) NSMutableArray* images;

- (void)onTapOkButton{

    NSLog(@"Save photos");

    if([self.delegado respondsToSelector:@selector(uploadPhotosFromCamera:)])
    [self.delegado uploadPhotosFromCamera:_images];

    [self onTapDismissButton];
}


PhotosTableViewController.h

@interface PhotosTableViewController : UITableViewController <CameraSessionViewDelegate>


PhotosTableViewController.m

@property (nonatomic, strong) CameraSessionView *camera;
- (void)viewDidLoad
{
_camera = [CameraSessionView new];
[_camera setDelegado:self];
}
-(void)uploadPhotosFromCamera:(NSMutableArray*)photos
{
    NSLog(@"UPFC");
    for(int x=0; x < [photos count];x++)
    {
        NSLog(@"UPFC...");

        UIImage *foto = [photos objectAtIndex:x];

         if (foto.size.height > 1000 || foto.size.width > 1000)
             foto = [self imageWithImage:foto scaledToScale:0.15f];

         DBMetadata* datos = [TablaSubidas addFile:pathElemento];
         NSFileManager *fileManager = [NSFileManager defaultManager];
         NSData *data = UIImageJPEGRepresentation(foto, 1.0);
         [fileManager createFileAtPath:[self photoPath:datos] contents:data attributes:nil];
         [elementosTabla insertObject:datos atIndex:0];
    }

    [self sincFotos];
    [self.tableView reloadData];
}


只希望在我按OK按钮时将照片发送回PhotosTableViewController,然后将照片上传到Dropbox。

onTapOKButton上的self.delegado始终为零。

看起来很简单,但我无法运行。
如果有人可以帮助我或向我推荐任何教程,我非常感谢...

谢谢!!

最佳答案

viewDidLoad结束后,您的CameraSessionView实例将从内存中释放。您需要将其存储在PhotosTableViewController中的属性中,以便保留它。

您的代表也应定义为弱者,例如

@property (nonatomic,weak) id< CameraSessionViewDelegate >delegado;


然后,在实现PhotosTableViewController时,需要实现-(void)uploadPhotosFromCamera:(NSMutableArray*)photos;方法。

同样,由于此方法定义为@optional,因此您应在调用它之前检查委托是否响应。

   if([self.delegado respondsToSelector:@selector(uploadPhotosFromCamera:]){
        [self.delegado uploadPhotosFromCamera:_images];
   }


如果未实现委托方法,这将防止应用程序崩溃。

10-08 06:08