Ios 如何制作KVO观察器并向tableview提供可变数组信息?
我有个问题,我是iphone编程的新手,我不知道怎么做。 我必须制作一个KVO观察器来知道textfield何时接收到字符串,并用动画将该字符串显示到tableview中,我已经从textfield中获得了字符串数组,但我不知道如何将其显示到tableview中。所以,如果有人帮忙,我们将不胜感激 这是我的密码:Ios 如何制作KVO观察器并向tableview提供可变数组信息?,ios,iphone,objective-c,uitableview,nsmutablearray,Ios,Iphone,Objective C,Uitableview,Nsmutablearray,我有个问题,我是iphone编程的新手,我不知道怎么做。 我必须制作一个KVO观察器来知道textfield何时接收到字符串,并用动画将该字符串显示到tableview中,我已经从textfield中获得了字符串数组,但我不知道如何将其显示到tableview中。所以,如果有人帮忙,我们将不胜感激 这是我的密码: - (BOOL)textFieldShouldReturn:(UITextField *)textField{ NSUserDefaults *userDefaults = [
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if (!self.tasks) self.tasks = [NSMutableArray new];
[self.tasks addObject:textField.text];
[userDefaults setObject:self.tasks forKey:@"tasks"];
NSLog(@"tasks:%@", [[NSUserDefaults standardUserDefaults]objectForKey:@"tasks"]);
NSLog(@"number of tasks:%d", self.tasks.count); <-- this print works good, also the first one
[textField addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:NULL];
[textField resignFirstResponder];
return YES;
}
将对象设置为
[NSUserDefaults standardUserDefaults]
确保调用[NSUserDefaults standardUserDefaults]同步]代码>
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if (!self.tasks) self.tasks = [NSMutableArray new];
[self.tasks addObject:textField.text];
[userDefaults setObject:self.tasks forKey:@"tasks"];
[userDefaults synchronize];
NSLog(@"tasks:%@", [[NSUserDefaults standardUserDefaults]objectForKey:@"tasks"]);
NSLog(@"number of tasks:%d", self.tasks.count); <-- this print works good, also the first one
[textField addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:NULL];
[textField resignFirstResponder];
return YES;
}
根据您的应用程序体系结构,在视图中调用[self.tableView reloadData]
可能会更好:(BOOL)动画
尝试下面的代码..使用文本字段编辑
- (void)textFieldDidEndEditing:(UITextField *)textField
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if (!self.tasks) self.tasks = [NSMutableArray new];
[self.tasks addObject:textField.text];
[userDefaults setObject:self.tasks forKey:@"tasks"];
[userDefaults synchronize];
NSLog(@"tasks:%@", [[NSUserDefaults standardUserDefaults]objectForKey:@"tasks"]);
NSLog(@"number of tasks:%d", self.tasks.count); <-- this print works good, also the first one
[textField addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:NULL];
[textField resignFirstResponder];
[self.yourtableview reloadData];
}
-(void)textfieldDendediting:(UITextField*)textField
{
NSUserDefaults*userDefaults=[NSUserDefaults standardUserDefaults];
如果(!self.tasks)self.tasks=[NSMutableArray new];
[self.tasks addObject:textField.text];
[userDefaults setObject:self.tasks forKey:@“tasks”];
[用户默认同步];
NSLog(@“任务:%@,[[NSUserDefaults standardUserDefaults]objectForKey:@“任务”]);
NSLog(@“任务数:%d”,self.tasks.count);同步是为了什么?我不知道那是什么,呵呵,视图中的重新加载数据将显示不工作,我需要tableview实时更新,同时文本字段返回字符串…谢谢。
- (void)viewDidLoad
{
[super viewDidload];
if (!self.TasksArray) self.TasksArray = [NSMutableArray new];
self.TasksArray = [[NSUserDefaults standardUserDefaults]objectForKey:@"tasks"];
[self.tableView reloadData];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"number of tasks when tableview:%d", self.TasksArray.count);
return self.TasksArray.count;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if (!self.tasks) self.tasks = [NSMutableArray new];
[self.tasks addObject:textField.text];
[userDefaults setObject:self.tasks forKey:@"tasks"];
[userDefaults synchronize];
NSLog(@"tasks:%@", [[NSUserDefaults standardUserDefaults]objectForKey:@"tasks"]);
NSLog(@"number of tasks:%d", self.tasks.count); <-- this print works good, also the first one
[textField addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:NULL];
[textField resignFirstResponder];
[self.yourtableview reloadData];
}