我似乎无法在我的系统偏好设置项目中解决我的NSImages问题?
图片是一个user.png,位于我的xcode项目的主文件夹中。
编辑:我已添加了Source Code的链接。希望有人能够发现问题。
PersonController.m
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
Person *person = [personsList objectAtIndex:row];
if (tableColumn == listGender) {
if ([person.gender isEqualToString: @"m"]) {
/****************************
* Method - 1: Doesn't work
****************************/
NSImage *image = [NSImage imageNamed:@"user.png"];
NSLog(@"image is valid? %@", [image isValid] ? @"yes" : @"no");
return image;
// return @"male";
}
else {
/****************************
* Method - 1: Doesn't work
****************************/
NSImage *image = [NSImage imageNamed:@"user_female.png"];
NSLog(@"image is valid? %@", [image isValid] ? @"yes" : @"no");
return image;
// return @"female";
}
}
else if (tableColumn == listName) {
return [person valueForKey:@"name"];
}
else {
return nil;
}
}
此外,指定此路径有效,但为什么我必须指定整个路径?
NSImage *myImage = [[NSImage alloc] initByReferencingFile:@"/Users/coderama/sandbox/Persons/user.png"];
答案 0 :(得分:2)
您可以通过以下方式访问项目文件夹中的图像文件:
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"smiley" ofType:@"png"];
NSImage *image = [[NSImage alloc] initWithContentsOfFile: imagePath];
NSImageCell *cell = [[NSImageCell alloc] init];
[cell setImage:image];
答案 1 :(得分:2)
请务必使用正确的图像名称。如果图像是“Smiley.png”,则使用“Smiley.png”。您还应该使用方法imageNamed
的扩展名。尝试:
NSImage *image = [NSImage imageNamed:@"smiley.png"];
并重复检查文件是否全部都是小写字母。
答案 2 :(得分:1)
smiley.png
文件是否显示在Xcode项目导航器中?如果不是,则不会将其添加到构建的应用程序中。将其拖动到Finder的导航器中,然后取消选择“将项目复制到目标...”。
如果它在导航器中,请检查目标成员资格。单击导航器中的文件,然后打开“实用程序”窗格。确保在第一个选项卡上选中了应用程序的复选框。
答案 3 :(得分:0)
虽然我没有检查您的代码,但我建议您采取以下步骤:
步骤1:在XIB中将NSImageCell拖放到listGender表列上。
第2步:在- tableView:objectValueForTableColumn:row:
当tableColumn == listGender
时返回nil第3步:实施此方法:
– tableView:willDisplayCell:forTableColumn:row:
并在单元格上设置图像
希望这会有所帮助:)