passing the value from one class to other class

泪湿孤枕 提交于 2019-12-02 20:00:39

问题


I am facing the problem in displaying the value of string of AddNotesViewController Class , in the Label of the DetailsOfPeopleViewController.

All i want to do is whatever we entered in the UITextView of 1 class,should display in the UILabel of another class.

In file AddNotesViewController.h

   UITextView *txtView;

  @property(nonatomic,retain)IBOutlet     UITextView *txtView;

in file AddNotesViewController.m

 @synthesize txtView;

After this when i click on the tab bar item "save" then it should save in the data base , its saving to database and displaying the value also but its not passing the value to

DetailsOfPeopleViewController .

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{

        NSLog(@"Tabbar selected itm %d",item.tag);

       switch (item.tag) {
          case 0:

         appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];


        NotesTable *crashNotInvolvingObj11 = (NotesTable *)[NSEntityDescription       
    insertNewObjectForEntityForName:@"NotesTable" inManagedObjectContext:[appDelegate    managedObjectContext]];

        // CameraViewController *camera=[[CameraViewController alloc] init];
            crashNotInvolvingObj11.personNote=[NSString    stringWithFormat:@"%@",txtView.text];

        DetailsOfPeopleViewController *detail=[DetailsOfPeopleViewController alloc];
        detail.testPersonNotesStr  =[NSString stringWithFormat:@"%@",txtView.text];
        //(value of testPersonNotesStr is DISPLYING here... )
        [appDelegate saveContext];
        [detail release];

        break;
        ..................

     }

in DetailsOfPeopleViewController.h

    NSString *testPersonNotesStr;
    UILabel *PersonNotesLbl;

     @property(nonatomic,retain)IBOutlet UILabel *PersonNotesLbl;
     @property(nonatomic,retain) NSString *testPersonNotesStr;

in DetailsOfPeopleViewController.m

       @synthesize PersonNotesLbl;
       @synthesize  testPersonNotesStr;



      - (void)viewDidLoad
      {
         [super viewDidLoad];
            [PersonNotesLbl setText:testPersonNotesStr];

         NSLog(@"PERSON NOTE is........ %@",testPersonNotesStr);
           //(value of testPersonNotesStr is NOT DISPLYING here..... )

        }

Please guide me where am I doing the mistake.


回答1:


Just do few thing in your code you will get you string

1 :->

Declair your DetailsOfPeopleViewController globally.

i.e. in .h

DetailsOfPeopleViewController *detail  

2 :->

in your viewDidLoad alloc it in memory

detail=[[DetailsOfPeopleViewController alloc] init];  

3 :->

Just declare your string property to copy

@property(nonatomic,copy) NSString *testPersonNotesStr;  

or

You can send data using NSUserDefault

SetValue

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSString stringWithFormat:@"%@",txtView.text]; forKey:@"testPersonNotesStr"];
[defaults synchronize];

GetValue

testPersonNotesStr = [[NSUserDefaults standardUserDefaults] objectForKey:@"testPersonNotesStr"];
NSLog(@"PERSON NOTE is........ %@",testPersonNotesStr);  

Follow my answer i have NSString value in addViewController and i want to display this value in UILabel of DetailsViewController




回答2:


You make it a property, so possibly try using the set method. Also, you need to init your ViewControlelr before setting the value. So:

DetailsOfPeopleViewController *detail=[[DetailsOfPeopleViewController alloc] init];
[detail setTestPersonNotesStr:[NSString stringWithFormat:@"%@",txtView.text]];

And I do not see where you actually display this view, you have to be displaying the same instance of this view to actually see the value.




回答3:


use delegates to pass values use this reference



来源:https://stackoverflow.com/questions/13602840/passing-the-value-from-one-class-to-other-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!