我在NIB文件中布局了一个视图,然后将我的UIView子类添加为文件所有者.
子类看起来像这样:
@property (nonatomic, weak) IBOutlet UILabel *categoryLabel;
@property (nonatomic, weak) IBOutletCollection(UIImageView) NSArray *images;
Run Code Online (Sandbox Code Playgroud)
由于这个原因,属性很弱:https://stackoverflow.com/a/7729141/1016515
然后我将标签和UIB中的UIImageViews从视图连接到文件所有者.
然后,在子类的awakeFromNib部分,我这样做了:
[[NSBundle mainBundle] loadNibNamed:@"CategoryButton" owner:self options:nil];
NSLog(@"label: %@",self.categoryLabel);
NSLog(@"images: %@",self.images);
Run Code Online (Sandbox Code Playgroud)
我希望看到categoryLabel和图像的地址.相反,我发现类别标签很好,图像是nil.
这是非常令人费解的,因为声明images和categoryLabel相同.为什么一个工作而另一个工作失败?
我该如何本地化密钥UIApplicationShortcutItemTitle?
我知道本地化是如何工作的像钥匙NSLocationUsageDescription和NSLocationAlwaysUsageDescription:你把你定位在InfoPlist.strings文件.
但是,这些是文档路径中的唯一键.
在这种情况下,我将为UIApplicationShortcutItemTitle每个快速操作设置一个,嵌套在字典和数组中.
如何本地化这些嵌套值?
我使用UITableViewCell情节提要中配置的一些static 来显示一些设置信息。
如果将其他设置之一关闭,则应禁用其他一些单元。
为了使单元格进入适当的状态,在此期间,viewWillAppear我从NSUserDefaults中读取了设置,然后相应地更改了单元格。
- (void) viewWillAppear:(BOOL)animated
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"OtherCellEnabled"]) {
[self otherCell].alpha = 1.0;
[self otherCell].userInteractionEnabled = YES;
}
else {
NSLog(@"Changing alpha to 0.3");
[self otherCell].alpha = 0.3;
[self otherCell].userInteractionEnabled = NO;
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我实际运行该程序时,即使它在日志中说Alpha已更改,但Alpha实际上并没有更改。的userInteractionEnabled似乎确实棒,但是阿尔法在1.0离开。
这不是单元重用的问题,也不是单元没有及时实例化的问题,因为可以更改其他设置。
将其从cell.alpha更改为cell.contentView.alpha是可行的,但这是不同的设置。
似乎所有设置都“粘住了”,但alpha设置已被覆盖。