gpt4 book ai didi

objective-c - 为什么 initWithCoder 没有正确初始化项目?

转载 作者:IT王子 更新时间:2023-10-29 08:08:04 24 4
gpt4 key购买 nike

我有一个 UITableViewCell 的子类。我的子类包含几个 UILabel。我希望我的子类将这些标签初始化为适用于我的每个表格 View 单元格的一些默认设置。

我读到我应该为此使用 initWithCoder。正在调用我的 initWithCoder 函数,我可以单步执行我的函数中的每一行,它看起来像是在进行 Action 。但是,当我运行我的应用程序时,我没有看到正在应用的任何属性。最值得注意的是,字体没有改变。我只是认为我在 UILabel 上修改的任何属性实际上都没有被保存或显示。

我将这个子类与 Storyboard 结合使用。我知道我的更改不会反射(reflect)在 Storyboard 上,但它们也不会在应用程序运行时反射(reflect)出来 - 尽管我的代码正在执行。

编辑:我想提一下,在尝试覆盖 initWithCoder 之前,我在这些子类中有一个实例方法,我将在其中运行此逻辑。我只是在其中调用该实例方法cellForRowAtIndexPath。这个方法是有效的,但我认为让这个子类中的这个逻辑自动发生会很方便。

有什么想法吗?我的代码如下:

#import "ThreadListCell.h"

@implementation ThreadListCell

- (id)initWithCoder:(NSCoder *)aDecoder {

if ((self = [super initWithCoder:aDecoder])) {

// adjust the font settings of the title
self.title.font = [UIFont fontWithName:@"SourceSansPro-Black" size:16];
self.title.textColor = [UIColor colorWithWhite:0.267f alpha:1.0f];

// adjust the font settings of the subtitle
self.text.font = [UIFont fontWithName:@"SourceSansPro-Light" size:14];
self.text.textColor = [UIColor colorWithWhite:0.267f alpha:0.9f];
self.text.textColor = [UIColor colorWithRed:1 green:0 blue:0 alpha:1];

// adjust the font settings of the location
self.location.font = [UIFont fontWithName:@"SourceSansPro-Light" size:8];
self.location.textColor = [UIColor colorWithWhite:0.267f alpha:0.9f];

// adjust the UILabel settings of the title
self.title.numberOfLines = 0;
self.title.lineBreakMode = UILineBreakModeTailTruncation;

// adjust the UILabel settings of the subtitle
self.text.numberOfLines = 0;
self.text.lineBreakMode = UILineBreakModeTailTruncation;

// adjust the UILabel settings of the location
self.location.numberOfLines = 0;
self.location.lineBreakMode = UILineBreakModeTailTruncation;
self.location.textAlignment = UITextAlignmentRight;

}

return self;

}

@end

还有标题:

#import <UIKit/UIKit.h>

@interface ThreadListCell : UITableViewCell

@property (nonatomic, weak) IBOutlet UILabel *text;
@property (nonatomic, weak) IBOutlet UILabel *title;
@property (nonatomic, weak) IBOutlet UILabel *location;

@end

最佳答案

当您收到消息时,您的 IBOutlets 都没有设置 - 您需要使用“awakeFromNib”或“viewDidLoad” - 类似的东西 - 来访问您的网点。也就是说,您可以在 initWithCoder 中设置其他非 outlet 内容。

关于objective-c - 为什么 initWithCoder 没有正确初始化项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11926862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com