第二次调用 textFieldDidEndEditing 时 NSFilemanager 不保存文件
我在更新 tableView
时遇到问题。
在由 rootviewcontroller 管理的弹出窗口的 tableView 中,显示了我的文档目录中的一些项目。在 detailViewcontroller
中,我使用 NSFilemanager
更改这些文件的名称。无论我做什么,tableView都不会显示新的。如果我关闭应用程序并再次打开它,我就能看到它们。目前,我尝试使用通知,但它不起作用......
编辑
我记录了我的文档目录,这绝对不是tableView问题,而且,它运行得很好,但是当我第二次进入时一些文本,没有任何反应...
DetailViewController
- (void)textFieldDidEndEditing:(UITextField *)tf
{
textLabel.text = textField.text;
NSString* newName = textLabel.text;
newName = [newName stringByAppendingPathExtension:@"txt"];
NSString* newPath = [[currentFilePath stringByDeletingLastPathComponent] stringByAppendingPathComponent:newName];
NSLog(@"%@",newPath);
[[NSFileManager defaultManager] moveItemAtPath:currentFilePath toPath:newPath error:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"DataSaved" object:nil];
}
RootViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self.tableView initWithFrame:self.tableView.frame style:UITableViewStyleGrouped];
self.clearsSelectionOnViewWillAppear = NO;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dataSaved:) name:@"DataSaved" object:nil];
}
- (void)dataSaved:(NSNotification *)notification
{
[self loadDirectoryContents];
[self.tableView reloadData];
}
I am having trouble with updating my tableView
.
In the tableView of the popover managed by the rootviewcontroller
, some items in my documents directory are displayed. In the detailViewcontroller
, i change the names of those files by using the NSFilemanager
. Regardless what I do, the tableView won't display the new ones. I get to see them if i close the app and open it again. At the moment, i try using notifications, but it doesn't work …
EDIT
I logged my documents directory, its definitely not a tableView problem, moreover, it works out well, but the second time I enter some text, nothing happens…
DetailViewController
- (void)textFieldDidEndEditing:(UITextField *)tf
{
textLabel.text = textField.text;
NSString* newName = textLabel.text;
newName = [newName stringByAppendingPathExtension:@"txt"];
NSString* newPath = [[currentFilePath stringByDeletingLastPathComponent] stringByAppendingPathComponent:newName];
NSLog(@"%@",newPath);
[[NSFileManager defaultManager] moveItemAtPath:currentFilePath toPath:newPath error:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"DataSaved" object:nil];
}
RootViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self.tableView initWithFrame:self.tableView.frame style:UITableViewStyleGrouped];
self.clearsSelectionOnViewWillAppear = NO;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dataSaved:) name:@"DataSaved" object:nil];
}
- (void)dataSaved:(NSNotification *)notification
{
[self loadDirectoryContents];
[self.tableView reloadData];
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这条线看起来有点可疑。你是如何构建你的桌面视图的?
This line looks a bit suspicious. How are you constructing your tableview?
当我输入一些东西时它就起作用了。但是,如果我第二次输入某些内容而没有在 tableView 中选择任何内容,则文件管理器不会将该项目移动到路径。有什么建议吗?这似乎不是与 tableView 相关的问题。
我还认为我需要设置:
但这给了我一个 EXC_BAD_ACCESS。
It works out when I type in something. But if i type in something the second time without having anything selected in the tableView, the fileManager doesn't move the item to the path. Any suggestions? It doesnt seem to be a tableView related Problem.
I also thought I needed to set:
But that gave me a EXC_BAD_ACCESS.