objective c - changing UILabel text on a subview from main view -


ok, i'm relative noob objective-c/ios programming, more knowledge here can me out.
have ipad application using splitviewcontroller template (with core data). created uiviewcontroller (with xib file) called playerviewcontroller. view has several uilabel components on it.

i have list of players show in rootviewcontroller (uitableview) , when select player, programmatically create playerviewcontroller (in detailviewcontroller), pass nsmanagedobject passed detailviewcontroller, try set text of 1 of labels on playerviewcontroller's view, , add subview detailviewcontroller.

all of works great except setting text of label on playerviewcontroller's view. i'm not sure i'm doing wrong. have used nslog confirm nsmanagedobject not nil , nsmanagedobject property i'm trying use has correct text.

i'm @ loss here. appreciated. (code follows):

this method in detailviewcontroller.m file:

- (void)configureview {     // update user interface detail item.     playerviewcontroller *player = [[playerviewcontroller alloc] init];     player.player = detailitem;     [self.view addsubview:player.view]; } 

this method called when user selects item rootviewcontroller (this functionality, calling of configureview, setup template , haven't changed it).

setting player property of playerviewcontroller object detailitem handled in setplayer method of class.

- (void)setplayer:(nsmanagedobject *)managedobject {      if (player != managedobject) {         [player release];         player = [managedobject retain];          // update view.         [self configureview];     } } 

i have configureview method in playerviewcontroller sets text of label:

- (void)configureview {     nickname.text = [[player valueforkey:@"nickname"] description];     nslog(@"nickname %@", [[player valueforkey:@"nickname"] description]);     nslog(@"nickname %@", nickname.text); }    

ok, first nslog statement prints desired value, text of uilabel (called nickname) returns nil.

the following full playerviewcontroller.h & .m files:

playerviewcontroller.h:

#import <uikit/uikit.h> #import <coredata/coredata.h>   @interface playerviewcontroller : uiviewcontroller {      nsmanagedobject *player;      iboutlet uilabel *nickname;     iboutlet uilabel *goalcount;     iboutlet uilabel *assistcount;     iboutlet uilabel *timeingame; }  @property (nonatomic, retain) iboutlet uilabel *nickname; @property (nonatomic, retain) iboutlet uilabel *goalcount; @property (nonatomic, retain) iboutlet uilabel *assistcount; @property (nonatomic, retain) iboutlet uilabel *timeingame;  @property (nonatomic, retain) nsmanagedobject *player;  @end 

playerviewcontroller.m:

#import "playerviewcontroller.h"   @implementation playerviewcontroller  @synthesize nickname, goalcount, assistcount, timeingame, player;  #pragma mark - #pragma mark managing detail item  /*  when setting player item, update view   */ - (void)setplayer:(nsmanagedobject *)managedobject {      if (player != managedobject) {         [player release];         player = [managedobject retain];          // update view.         [self configureview];     } }         - (void)configureview {     nickname.text = [[player valueforkey:@"nickname"] description];     nslog(@"nickname %@", [[player valueforkey:@"nickname"] description]);     nslog(@"nickname %@", nickname.text); }  /*  // designated initializer.  override if create controller programmatically , want perform customization not appropriate viewdidload. - (id)initwithnibname:(nsstring *)nibnameornil bundle:(nsbundle *)nibbundleornil {     if ((self = [super initwithnibname:nibnameornil bundle:nibbundleornil])) {         // custom initialization     }     return self; } */  /* // implement viewdidload additional setup after loading view, typically nib. - (void)viewdidload {     [super viewdidload]; } */    - (bool)shouldautorotatetointerfaceorientation:(uiinterfaceorientation)interfaceorientation {     // overriden allow orientation.     return yes; }   - (void)didreceivememorywarning {     // releases view if doesn't have superview.     [super didreceivememorywarning];      // release cached data, images, etc aren't in use. }   - (void)viewdidunload {     [super viewdidunload];     // release retained subviews of main view.     // e.g. self.myoutlet = nil; }   - (void)dealloc {     [super dealloc]; }   @end 

i'm sure i'm missing trivial, can't figure out, , haven't been able find answers searching web.

thanks help!

ok, after playing bit , searching , searching around, have gotten answer problem. turns out code had fine except location of 1 statement. call configureview in playerviewcontroller.m needed in viewdidload() not in setplayer() method. works great now.


Comments

Popular posts from this blog

android - Spacing between the stars of a rating bar? -

aspxgridview - Devexpress grid - header filter does not work if column is initially hidden -

c# - How to execute a particular part of code asynchronously in a class -