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

Popular posts from this blog

php - SPIP: From Tag directly to an article -

jquery - isAjaxRequest always return false -

ruby on rails - In a controller spec, how to find a specific tag in the generated view? -