ios - How to make a KVO observer and feed tableview with MutableArray info? -
i have problem, im starter in iphone programming , dont know how this. have make kvo observer know when textfield receiving string , display strings tableview animation, got array of strings textfield dont know how display tableview. someones great appreciated!!
heres code:
- (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); <-- print works good, first 1 [textfield addobserver:self forkeypath:@"name" options:nskeyvalueobservingoptionnew context:null]; [textfield resignfirstresponder]; return yes; } and in tableviewcontroller have (for testing not work :():
[self viewdidload]; if (!self.tasksarray) self.tasksarray = [nsmutablearray new]; self.tasksarray = [[nsuserdefaults standarduserdefaults]objectforkey:@"tasks"]; - (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section { nslog(@"number of tasks when tableview:%d", self.tasksarray.count); //return self.tasksarray.count; return self.tasksarray.count; }
after setting object [nsuserdefaults standarduserdefaults] make sure call [nsuserdefaults standarduserdefaults] synchronize];
- (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); <-- print works good, first 1 [textfield addobserver:self forkeypath:@"name" options:nskeyvalueobservingoptionnew context:null]; [textfield resignfirstresponder]; return yes; } you may have call [self.tableview reloaddata] after assigned object [nsuserdefaults standarduserdefaults] self.tasksarray.
- (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; } depending on app architecture might better call [self.tableview reloaddata]in viewwillappear:(bool)animated
Comments
Post a Comment