Objective c 无法将值从UITableViewCell传递到详图视图
我试图根据在表格视图中触摸的单元格更改详细视图中标签的颜色 我就是做不到。下面是我的代码。我已经包含了详细视图中的头文件,并为标签创建了一个Objective c 无法将值从UITableViewCell传递到详图视图,objective-c,cocoa-touch,uistoryboard,Objective C,Cocoa Touch,Uistoryboard,我试图根据在表格视图中触摸的单元格更改详细视图中标签的颜色 我就是做不到。下面是我的代码。我已经包含了详细视图中的头文件,并为标签创建了一个IBOutlet 更新:理想情况下,当我单击单元格时,detailview中的标签颜色应该是红色。这是一个关于我的问题的视频 当您切换时,插座尚未设置,因此您无法找到插座进行更改。试着在你所选择的viewcontroller的ViewDiLoad中发送一些对象或东西。你读了这些内容,然后用它们作为知道要更改的颜色的方法,然后在相同的代码中更改标签的颜色。你遇
IBOutlet
更新:理想情况下,当我单击单元格时,detailview中的标签颜色应该是红色。这是一个关于我的问题的视频
当您切换时,插座尚未设置,因此您无法找到插座进行更改。试着在你所选择的viewcontroller的ViewDiLoad中发送一些对象或东西。你读了这些内容,然后用它们作为知道要更改的颜色的方法,然后在相同的代码中更改标签的颜色。你遇到的问题是,你的产品中的标签ReferenceDetailViewController尚未从xib加载,但您正在尝试设置其textColor属性 为了确保这是问题所在,请尝试在设置颜色的行中设置断点,并在ReferenceDetailViewController[viewDidLoad]方法中设置另一个断点。应该首先调用设置颜色的行 解决问题的一个简单方法是在ReferenceDetailViewController类上有一个属性,该属性“保存”UIColor实例,然后在viewDidLoad方法上设置它:
// ...
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"ReferenceDetail"]) {
ReferenceDetailViewController *referenceDetailViewController = [segue destinationViewController];
UIViewController *referenceDetailView = [segue destinationViewController];
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSString *destinationTitle = [[referenceArray objectAtIndex:[indexPath row]] name];
[referenceDetailView setTitle:destinationTitle];
referenceDetailViewController.auxTextColor = [UIColor redColor];
}
// ..
在ReferenceDetailViewController中:
@interface ReferenceDetailViewController : UIViewController
@property (retain, nonatomic) UIColor *auxTextColor;
// ...
@end
@implementation ReferenceDetailViewController
- (void)viewDidLoad
{
[super viewDidLoad];
label1.textColor = self.auxTextColor;
// ...
}
@end
如果必须对一组标签执行此操作,最好使用NSDictionary对象来保存这些属性。请解释您观察到的实际结果。您好@H2CO3,我已更新了我的问题!谢谢您的评论。@Jason我想问题是您没有在xib中设置文本颜色,但我不确定。如果有用的话就试试。谢谢你的评论@W'rkncacnter。当我编译并运行时,detailview中的标签根本没有改变。你知道吗?@H2CO3我设置为“蓝色”,但仍然不起作用。真的很奇怪。似乎我可以访问detailview,但就是无法写入它。
@interface ReferenceDetailViewController : UIViewController
@property (retain, nonatomic) UIColor *auxTextColor;
// ...
@end
@implementation ReferenceDetailViewController
- (void)viewDidLoad
{
[super viewDidLoad];
label1.textColor = self.auxTextColor;
// ...
}
@end