objective-c - UILabel 文本没有改变,但是 xx.title 正在工作

标签 objective-c ios6 uilabel uinavigationbar

我有两个 View Controller 。在第一个 View Controller 中,我有名称列表。当我点击它时,我希望在第二个 View Controller 中显示相同的名称。

我有以下代码。

-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    // PropDetailViewController is second view controller
    PropDetailViewController *prop = [self.storyboard instantiateViewControllerWithIdentifier:@"prop"];

    ListOfProperty *propList = [propListFinal objectAtIndex:indexPath.row];

    NSString *myText = [NSString stringWithFormat:@"%@", propList.addressOfFlat];
    prop.detailLabel.text = myText;
    prop.title  = myText;

    [self.navigationController pushViewController:prop animated:YES];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

PropDetailViewController 中,我有 @property (retain, nonatomic) IBOutlet UILabel *detailLabel;

我所期望的是,当我点击说 Name 1 时,我会在 UILabel 和 UINavigationBar 中看到 Name 1 作为文本。但是,我只在导航栏上看到 Name 1,而在 UILabel 上看不到。

最佳答案

不建议在程序流的那个点访问 UIView 项目。设置 prop.detailLabel.text 的值时, View 可能尚未加载。当稍后加载 View 时,UIView 将使用 IB 中 XIB 文件中给出的默认设置进行更新。

你应该设置一个 NSString 属性,比方说

@property (retain, nonatomic) NSString *propName;

像你一样在推送 View Controller 之前分配它。但是使用这个属性而不是 UILable。在 viewDidLoad 的 PropDetailViewController 中执行以下操作:

(void) viewDidLoad {
  // call super viewDidLoad and all the works ...

  self.detailLabel.text = propName;

} 

您可以使用 viewWillAppear 而不是 viewDidLoad。因为 viewDidLoad 可以在您分配属性值时已经执行。

如果你想站在保存的一边,那么发明一个新的 init 方法,你可以在其中交出你想要预先设置的所有值。 但是我从来没有将它与 Storyboard结合使用(你可以在其中使用实例化......而不是初始化......)因此我无法给出任何建议。

另一种干净的方法是坚持使用 propName 属性,但实现自定义 setter -(void)setPropName:(NSString)propName; 在您设置属性的地方(如果您自动合成,可能是 _propName)并设置 UILable 文本加上在 viewDidLoad 中设置 UILable 文本。

关于objective-c - UILabel 文本没有改变,但是 xx.title 正在工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14435261/

相关文章:

Objective-C 整数运算

objective-c - iOS6 是否有任何严重的变更日志?

ios - 删除通用存折中缩略图周围的白色边框?

iOS 旋转标签如果太长

iphone - 确定对象来自哪个字典

iphone - 将 UITabbarController 与 pushViewController 一起使用

objective-c - 如何确定已编译的 Objective-C 应用程序是否正在使用垃圾回收?

objective-c - UITableView 作为 AppDelegate 中的 subview

swift - 页面控件中的多个 UILabel

objective-c - 从 UILabel 中显示的整数中减一