ios - UILabel not updating when called from delegate method -


i'm using contact picker grab string, pass string view controller, uilabel not updating data (or other string).

in slingviewcontroller.m logs below, _taggedfriendsnames being passed successfully.

perhaps issue because receiving view controller trying update label on (slingshotview) view? don't think that's case i've been updating labels in way in other methods.

the answer related updating uilabels in general, i've had no luck after searching.

things i've checked no success:

  1. updating main thread asynchronously
  2. @synthesize label in slingshotview
  3. calling setdisplay

included potentially relevant code below. in advance tips!

slingviewcontroller.m

-(void)updatefriendspickedlabel:(id)sender {     nslog(@"updatefriendspickedlabel: %@", _taggedfriendsnames); // see     slingshotview.friendspickedlabel.text = @"any string"; // don't see } 

slingviewcontroller.h

@class tbmultiselectcontroller; @class slingshotview;   @interface slingviewcontroller : uiviewcontroller  @property (nonatomic, readonly) slingshotview *slingshotview;  @property(nonatomic) nsstring *taggedfriendsnames;   //for friend picker -(void)updatefriendspickedlabel:(id)sender;  @end 

multiselectviewcontroller.m

- (ibaction) sendbutton: (id) sender {  nsmutablestring *mystring = [[nsmutablestring alloc]initwithstring:@""];  (int i=0; < self.selectedcontacts.count; i++) {     contact *mycontact = self.selectedcontacts[i];     [mystring appendstring:[nsstring stringwithformat:@"%@ %@ ", mycontact.firstname, mycontact.lastname]]; }  slingviewcontroller *svc = [[slingviewcontroller alloc] init]; svc.taggedfriendsnames = mystring; [svc updatefriendspickedlabel:self];  [self.navigationcontroller dismissviewcontrolleranimated:yes completion:nil]; } 

multiselectviewcontroller.h

@protocol tbmultiselectcontrollerdelegate;  @class slingviewcontroller;  @interface tbmultiselectcontroller : uiviewcontroller <uitableviewdatasource, uitableviewdelegate, uisearchdisplaydelegate, tbcontactsgrabberdelegate>  @property (nonatomic, assign) id<tbmultiselectcontrollerdelegate> delegate;  - (ibaction)sendbutton: (id) sender;  @end  @protocol tbmultiselectcontrollerdelegate <nsobject>  -(void)updatefriendspickedlabel:(id)sender;  @end 

slingshotview.h

@property (strong, nonatomic) uilabel *friendspickedlabel; 

slingshotview.m

@synthesize friendspickedlabel;  ... - (id)initwithframe:(cgrect)frame {  if ((self = [super initwithframe:frame])) {      cgrect screenrect = [[uiscreen mainscreen] bounds];     cgrect imageframe = cgrectmake(0, 0, screenrect.size.width, screenrect.size.height);      contentview = [[uiview alloc] initwithframe:frame];     [contentview setbackgroundcolor:[uicolor whitecolor]];     [contentview setautoresizingmask:uiviewautoresizingflexiblewidth|uiviewautoresizingflexibleheight];     [self addsubview:contentview];       self.friendspickedlabel = [[uilabel alloc] initwithframe:cgrectmake(10, screenrect.size.height/2-100, screenrect.size.width-20, 200)];     self.friendspickedlabel.shadowcolor = [uicolor darkgraycolor];     self.friendspickedlabel.numberoflines =  0;     self.friendspickedlabel.shadowoffset = cgsizemake(0.5, 0.5);     self.friendspickedlabel.backgroundcolor = [[uicolor blackcolor] colorwithalphacomponent:0.0];     [self.friendspickedlabel settextalignment:nstextalignmentleft];     self.friendspickedlabel.textcolor = [uicolor whitecolor];     self.friendspickedlabel.font = [uifont fontwithname:@"helveticaneue-bold" size:24];     [contentview addsubview:self.friendspickedlabel]; 

you reallocating this..

slingviewcontroller *svc = [[slingviewcontroller alloc] init]; svc.taggedfriendsnames = mystring; [svc updatefriendspickedlabel:self]; 

meaning slingshotview.friendspickedlabel becomes nil..

and calling/using delegate wrong way, think suppose

[self.delegate updatefriendspickedlabel:@"yourdata passed"];


from code using -(void)updatefriendspickedlabel:(id)sender; inside slingviewcontroller , not delegate, not implementing delegate either..

yes -(void)updatefriendspickedlabel:(id)sender; method called, bacause calling directly class..

slingviewcontroller.h

@interface slingviewcontroller : uiviewcontroller < tbmultiselectcontrollerdelegate > // delegate implementation  @property (nonatomic, readonly) slingshotview *slingshotview;  @property(nonatomic) nsstring *taggedfriendsnames;   //for friend picker //-(void)updatefriendspickedlabel:(id)sender;  @end 

multiselectviewcontroller.m

- (ibaction) sendbutton: (id) sender {      nsmutablestring *mystring = [[nsmutablestring alloc]initwithstring:@""];      (int i=0; < self.selectedcontacts.count; i++) {         contact *mycontact = self.selectedcontacts[i];         [mystring appendstring:[nsstring stringwithformat:@"%@ %@ ", mycontact.firstname, mycontact.lastname]];     }      /*     slingviewcontroller *svc = [[slingviewcontroller alloc] init];     svc.taggedfriendsnames = mystring;     [svc updatefriendspickedlabel:self];     */       [self.delegate updatefriendspickedlabel:@"yourstring"];       // call method in implementation class      [self.navigationcontroller dismissviewcontrolleranimated:yes completion:nil]; } 

hmm.. think have implemented delegates wrong way.

this suppose comment long..


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -