【问题标题】:Why UILabel didn't display the assigned NSString's value?为什么 UILabel 没有显示分配的 NSString 的值?
【发布时间】:2014-09-07 03:30:35
【问题描述】:

在我的项目中,我正在使用 UILabel 和 NSArray,我正在以 NSString 的形式从数组中传递一个参数,我已经使用断点检查了方法的调用,该参数正确地传递了参数,但在尝试使用接收到的参数(在 NSString 的 from 中),但 UILabel 显示 NULL 值。这是代码:

- (void)updateMenuLabel:(NSString *)passedObject {
   NSString *str=[NSString stringWithFormat:@"%@", passedObject];
   lbl_selectitem.text=str;

}

【问题讨论】:

  • IB连接不正确?顺便说一句,stringWithFormat 行是多余的。
  • 用IBOutlet连接,去掉多余的线试了下还是NULL
  • 确保 lbl_selectitem 不为零(使用 NSLog(@"%@",lbl_selectitem) 记录它)。
  • 如果标签中出现 NULL 字样,则 passedObject 变量为 nil

标签: ios iphone objective-c nsstring uilabel


【解决方案1】:

发生这种情况的原因有很多:如果这是一个属性,则它没有从 xib/nib 文件或情节提要中正确链接。如果这是以编程方式创建的,您在为该对象分配内存时是否检查过它?很明显,对象是 nil,但你必须注意过程中的位置。 在viewDidLoadviewDidAppear(例如)中放置一个断点以查看对象是否仍为 nil 并从那里开始。

【讨论】:

  • 这是作为答案发布的,但它不会尝试回答问题。它可能应该是编辑、评论、另一个问题或完全删除。
【解决方案2】:

您需要检查passedObject 字符串值。打印 nslog 相同的值。正如 rckoenes 所说,它是 nil。

【讨论】:

    【解决方案3】:

    如果你在接口中得到 NULL,那意味着字符串是 nil。 如果您看不到任何更改,则表示字符串为空 (@"") 或 lbl_selectitem 为 nil。也许没有连接到 xib 中的对象。

    在第一行添加断点。然后去lldb控制台输入:

    po lbl_selectitem
    po passedObject
    

    存储在属性中的值会被打印出来,你会发现错误。

    【讨论】:

      【解决方案4】:

      两件事,

      • 格式化时检查字符串是否为nil/null。
      • 确保如果 UILabel 是 IBOutlet,它被声明为属性 (@property)。 如果不是 IBOutlet,并且您正在创建 UILabel,请使用 addSubview: 方法添加到父视图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-20
        • 2012-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-10
        相关资源
        最近更新 更多