【问题标题】:i have NSString value in addViewController and i want to display this value in UILabel of DetailsViewController我在 addViewController 中有 NSString 值,我想在 DetailsViewController 的 UILabel 中显示这个值
【发布时间】:2012-11-10 16:36:43
【问题描述】:

我是编程新手。任何帮助都将不胜感激。

它在 AddViewController 中。

NSLog(@"Am Currently at %@",locatedAt);

DetailsOfPeopleViewController *details=[DetailsOfPeopleViewController alloc];
   details.testAddressStr=[NSString stringWithFormat:@"%@",locatedAt];

details.testAddressStr 在此处显示该值,但并未将此值传递给 DetailsViewController。

locatedAt 的值显示在 AddViewController 中。当我尝试在 DetailsViewController 类的 UILabel 中显示此值时,它不会在标签中显示该值。

在 DetailsViewController.h 中:

NSString *testAddressStr;

@property(nonatomic,strong) NSString *testAddressStr;
@property(nonatomic,retain)IBOutlet UILabel *addressLabel;

在 DetailsViewController.m 中:

 [addressLabel setText:testAddressStr];

我也是这样尝试的:

addressLabel.text=[NSString stringWithFormat:@"%@",testAddressStr];

我并没有真正了解我犯错的地方......

【问题讨论】:

  • 你在哪里调用 [addressLabel setText:testAddressStr];
  • 正在调用 [addressLabel setText:testAddressStr];这个在DeatilViewController的viewDidLoad中。感谢您的快速回复..
  • 嘿 suvarna +1 bhi karo na yaar..:)
  • 嘿,实际上我不确定如何 +1 ..我通过点击空符号标记接受了你的回答,然后它变成了绿色符号标记......这是制作 +1 r8 的方法?
  • 只需点击我的回答附近的上箭头...就像:- ^ 这是赞成的标志

标签: iphone nsstring uilabel


【解决方案1】:

您可以使用NSUserDefault发送数据

设置值

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

获取值

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

:)

【讨论】:

    【解决方案2】:

    问题是由于您分配了一个自动释放的变量。它在您将其显示在 detailView 上之前已发布。所以你需要保留它。或者你需要分配testAddressStr

    只需替换这一行:

    details.testAddressStr=[NSString stringWithFormat:@"%@",locatedAt];
    

    与:

    details.testAddressStr = [[NSString stringWithFormat:@"%@",locatedAt] retain];
    

    details.testAddressStr = [[NSString alloc] initWithString:[NSString stringWithFormat:@"%@",locatedAt]];
    

    【讨论】:

    • 其实我想要的是,我需要在 UILabel 的其他视图中显示 NSString 的值(它在自己的视图中显示)...
    • NSLog(@" addressLabel.text ISSS... %@",addressLabel.text); NSLog(@"testAddressStr iss %@",testAddressStr);如果我这样打印它显示为(null)...
    • @suvarna: 你在其他地方分配 testAddressStr 吗?
    • 嘿!我解决了这个问题...对我的应用程序进行了一些其他自定义...感谢所有人提供的线索...
    【解决方案3】:

    保留您的字符串 locatedAt,您已在其中对其进行了初始化。 像这样

    [locatedAt retain];
    

    享受编程

    【讨论】:

      【解决方案4】:

      Objective-C 中没有“对象的范围”这样的东西。范围规则与对象的生命周期无关——保留计数就是一切。

      您通常需要声明对实例变量的所有权。请参阅 Objective-C 内存管理规则。使用保留属性,您的属性设置者声称拥有新价值的所有权并放弃旧价值的所有权。使用 assign 属性,周围的代码必须这样做,这在职责和关注点分离方面同样混乱。使用 assign 属性的原因是您无法保留该值(例如 BOOL 或 NSRect 等非对象类型),或者保留它会导致不必要的副作用。

      顺便说一句,在 NSString 的情况下,正确的属性类型通常是副本。这样,如果有人传入 NSMutableString(这是有效的——它是一种 NSString),它就不会从你下面改变。

      【讨论】:

        【解决方案5】:

        尝试替换

         [addressLabel setText:testAddressStr];
        

        以下

         [addressLabel setText:self.testAddressStr];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-07
          • 2015-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多