我正在尝试在转换控制器上设置字段和按钮图像。我可以成功更改标题字段和详细信息文本字段,但按钮根本不会更改。
- (void)prepareController:(MLSViewController *)controller forRow:(NSUInteger)row {
AdvancedTableItem *item = [self.tableItems objectAtIndex:row];
EditLocationViewController *castedController = (EditLocationViewController *)controller;
castedController.titleText = item.text;
castedController.detailsText = item.details;
castedController.isDefaultLocation = (defaultItem == item);
[castedController.iconButton setImage:[UIImage imageNamed:item.icon] forState:UIControlStateNormal ];
}
我确实测试了item.icon是否正确填充,然后在casted控制器的按钮上调用setImage并且它是正确的。
简而言之,此代码适用于titleText和detailsText更改但不适用于按钮图像。
有任何线索吗?
答案 0 :(得分:1)
有几件事可能是错的。我会做以下事情:
这就是我在你的方法中所做的:
- (void)prepareController:(MLSViewController *)controller forRow:(NSUInteger)row {
AdvancedTableItem *item = [self.tableItems objectAtIndex:row];
NSLog( @"Item from table: %@", item );
EditLocationViewController *castedController = (EditLocationViewController *)controller;
NSLog( @"Controller: %@", castedController );
castedController.titleText = item.text;
castedController.detailsText = item.details;
castedController.isDefaultLocation = (defaultItem == item);
NSLog( @"Icon Name: %@", item.icon );
UIImage *icon = [UIImage imageNamed:item.icon];
NSLog( @"Icon Image: %@, icon button on controller: %@", castedController.iconButton );
[castedController.iconButton setImage:icon forState:UIControlStateNormal ];
}
确保所有值都不是NIL(尤其是图标和iconButton)。
当处理iPhone / iOS中的问题时,NSLog是你的朋友,嵌套的调用是你的敌人。仅仅因为变量是NIL并不意味着应用程序会抱怨它。它可能会忽略它。