我对IOS还是很陌生,现在正在从事这个大项目,该项目需要从Dropbox和googleDrive等存储通道访问文件...
我设法找到了保管箱文件并对其进行了操作,但是问题是,如果没有视图类上的DBRestClient属性(UITableView
在我的情况下),我就不会这样做,但并不是MVC。
当我尝试将其放在另一个类上时,说一个NSObject
实现DBRestClientDelegate的,什么也没发生。
我知道这个问题已经发布过了,有人说NSObject
需要对其进行强有力的引用,以使其不会被释放,但是我只是这样做了,仍然没有任何反应。
这是我的一些代码:
该NSObject
班DropboxServices
@interface DropboxServices : NSObject <DBRestClientDelegate>
@property (nonatomic, readonly) DBRestClient *restClient;
@implementation DropboxServices
@synthesize restClient=_restClient;
- (DBRestClient *)restClient {
if (!_restClient) {
if ( [[DBSession sharedSession].userIds count] ) {
_restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
_restClient.delegate = self;
}
}
return _restClient;
}
- (void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata {
NSLog(@"method called!!!!!!!!!!!!!!!!!!!");
}
这是UITableView
我以前使用过的DBRestClient的类:
@interface DropboxFolderItemsTableView : UITableView
@property (nonatomic, readonly) DropboxServices *dropboxServices;
但是当我尝试加载元数据时:
[[self.dropboxFolderItemsTableView.dropboxServices restClient] loadMetadata:@"/"];
什么都没发生。
在将近2个星期没有反应后,我尝试了一种完全不同的方法。我在这篇文章中发现了一个有趣的事实:自定义UIView作为UITableView委托和数据源?那是我的每个UITableViews的委托控制器,不必是显示它的视图控制器。
因此,我可以将DBRestClient放在新创建的viewController中(或在我的情况下为tableViewController,放置在dropboxFolderItemsTableViewController中),并从实际上包含表视图的视图控制器中对其进行强有力的引用,然后将实际的dropbox tableView(dropboxFolderItemsTableView)分配给是此新创建的viewController的表视图。
self.dropboxFolderItemsTableViewController=[[DropboxFolderItemsTableViewController alloc]init];
self.dropboxFolderItemsTableViewController.tableView=self.dropboxFolderItemsTableView;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句