gpt4 book ai didi

ios5 - 如何在 ios5 上为我的文件浏览器项目使用 Storyboard?

转载 作者:行者123 更新时间:2023-12-02 05:04:12 25 4
gpt4 key购买 nike

我正在尝试找到一种使用 Storyboard 来浏览远程文件系统(保管箱)的解决方案。例如,如果用户点击浏览文件夹,则没有关于文件夹结构有多深的信息。我的意思是该文件夹可能包含另一个文件夹,另一个可能包含另一个文件夹,它可以转到 5、10、20 等。这使得无法定义我应该添加多少个 tableview Controller 我的 Storyboard。我尝试只使用一个并使用以下代码为每个选定的文件夹更新相同的表格 View :

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath <br/>
{<br/>[dropBoxArray removeAllObjects]; //remove all the objects which comes from the previous folder structure <br/><br/>
[[self restClient] loadMetadata:@"/selected folder/"]; // load the newly selected folder
contents
<br/>}

它只对一个方向起作用,用户可以浏览文件夹树直到永远,但这次不可能一步一步地返回。因为导航 Controller 将后退按钮放在导航项上,它会加载上一个 View 而不是上层目录。我找不到如何正确处理此逻辑并需要帮助。

最佳答案

首先更改您的后退按钮操作方法,后退按钮从堆栈中弹出最后一个 View ,因此它可能不适用于您的情况,并添加一个下一个按钮(或使用适合您的 didselect row)

其次使用单例类来保留文件夹路径。

所以接下来将添加一个详细文件夹到您的元数据路径 selected folder/detail folder 并返回将删除最后一个路径 selected folder/

将单例添加到您的代码中:

#import <Foundation/Foundation.h>
@interface SingletonClass : NSObject
{
NSString *lastCreatedFolderName;
NSMutableArray *fileListForEdit;
}
@property (nonatomic, retain) NSString *lastCreatedFolderName;
@property (nonatomic, retain) NSMutableArray *fileListForEdit;
+ (SingletonClass *)sharedInstance;

@end

#import "SingletonClass.h"

@implementation SingletonClass

@synthesize lastCreatedFolderName=_lastCreatedFolderName;
@synthesize fileListForEdit=_fileListForEdit;

+ (SingletonClass *)sharedInstance
{
static SingletonClass *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[SingletonClass alloc] init];
// Do any other initialisation stuff here
});
return sharedInstance;
}

- (id)init {
if (self = [super init]) {
_lastCreatedFolderName = @"Empty Folder";
_fileListForEdit=[[NSMutableArray alloc]init];

}
return self;
}
-(NSString *) addFolderPath : (NSString *) nextFolder{


[_fileListForEdit addObject:nextFolder]; // add your folder path to mutablearray
for(int i=0 ; int<[_fileListForEdit count]; i++) {
_lastCreatedFolderName=[NSString stringWithFormat:@"%@/%@",_lastCreatedFolderName,[_fileListForEdit objectAtIndex:i]]; //add folder path to your current path

}

return _lastCreatedFolderName;
}
-(NSString *) removeLastFolderDromPath
{
[_fileListForEdit removeLastObject];// remove last folder path from array

//create new folder path
for(int i=0 ; int<[_fileListForEdit count]; i++) {
_lastCreatedFolderName=[NSString stringWithFormat:@"%@/%@",_lastCreatedFolderName,[_fileListForEdit objectAtIndex:i]]; //add folder path to your current path

}

return _lastCreatedFolderName;
}


@end

在 -(void)loadView 中:

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithTitle:@"back" style:UIBarButtonItemStyleBordered target:self action:@selector(backPressed:)];
self.navigationItem.leftBarButtonItem = btn;

UIBarButtonItem *btnNext = [[UIBarButtonItem alloc] initWithTitle:@"next" style:UIBarButtonItemStyleBordered target:self action:@selector(nextPressed:)];
self.navigationItem.rightBarButtonItem = btnNext;

-(void)backPressed: (id)sender
{
//call your singleton here and load last path
SingletonClass *sharedInstance=[SingletonClass sharedInstance];
NSString *destDirectory= [sharedInstance addFolderPath :@"nextFolder"];

}
-(void)nextPressed: (id)sender
{
//call your singleton here and load last path
//get last created file name from singleton
SingletonClass *sharedInstance=[SingletonClass sharedInstance];
NSString *destDirectory= [sharedInstance removeLastFolderDromPath];//gives you the new path
}

然后调用你的客户

[[self restClient] loadMetadata:destDirectory];

请注意,此调用未经测试,您可能会看到一些拼写错误,需要稍微编辑一下代码

关于ios5 - 如何在 ios5 上为我的文件浏览器项目使用 Storyboard?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13551888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com