IOS开发中在使用table view 默认风格显示图片时,imageview 中无法正常显示图片,由于是刚开始学习,总以为是自己对于控件的接口使用问题:

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];

    //row

    NSUInteger row = [indexPath row];

    

    //label text

    NSDictionary *dic= self.listTeams[row];

    cell.textLabel.text = dic[@"name"];

    cell.detailTextLabel.text = dic[@"image"];

    NSString *imagePath = [[NSString alloc] initWithFormat:@"%@.png", dic[@"image"]];

   cell.imageView.image = [UIImage imageNamed:imagePath];

   但是搜索了些别人的使用方法,感觉并无不妥。最终冷静下来定位分析是否数据源本来就没有找到导致,果然通过bundle 查找资源路径输出一直未null, 难怪资源文件都找不到,怎么让别人给你显示图片?

但是关于资源的引用之前已经尝试过,然后在网上确认了下之前的两种方式:

Copy items if needed
勾选,会将资源文件拷贝到项目中(项目文件夹)
不勾选,只会保存一个对这个文件的引用,并不会拷贝到项目中去。如果项目目录更换了路径,一般会编译失败,除非再次引用资源文件句号
备注:在一般开发中这个选项是一定要勾选的

Added folders:Create groups
如果资源文件是目录的话,为资源文件创建组。当拖动一个包含资源文件的目录到项目中时,选择这个条目之后,在代码中引用资源文件就只需要直接写资源文件的路径,不用加上目录了。
备注:在Xcode项目中,文件夹有两种颜色:黄色和蓝色。黄色代表的组,表明在项目文件中并没有实质性的文件夹,代码中可以直接通过文件名来获取资源。蓝色代表实体文件夹,表明在项目中存在着实质性的文件夹,代码中则需要通过深入目录来获取到资源文件。

Added folders : Create Folder reference
和上面的group选项相反,当拖动的是一个包含资源文件的目录时,会创建实质性的目录(显示为蓝色),代码中需要使用资源文件的时候路径必须带上目录。

例子:如果项目文件中有个实体目录test/test1.h,在Xcode中test目录显示为蓝色,那么则需要#include"test/test1.h";如果为黄色,则需要test1.h就可以了

简单来说create group 可以直接通过文件名称访问,而且从测试情况来看,只是建立了引用,源文件被删除后,编译会报错;

create folder reference 是将整个目录放置进来,源文件删除不影响,但是访问文件资源时需要全路径,不能靠名字区分了。

 

虽然这个资源文件的访问方式大体已经了解,但是万万没想到,直接通过文件名称的访问方式还不支持png这种后缀,在使用接口:

    NSString *pngPath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"];

此路径始终为空,但是如果换一个html文件或者txt文件,就可以访问到,又百思不得其解。然后换个思路,将png图片资源文件放置到一个目录中,然后将这个目录以第二种方式的资源引用放入到工程,最后使用全路劲进行访问,结果柳暗花明又一村,文件路径就出来了:

    NSString *pngPath  = [[NSBundle mainBundle] pathForResource:@"test.png" ofType:nil inDirectory:@"pic"];

    NSLog(@" png path is %@", pngPath);

2019-05-21 16:33:33.034913+0800 12_TableView[17500:814706]  png path is /Users/hongboni/Library/Developer/CoreSimulator/Devices/ED01C132-C7F2-4966-9732-14711B50513D/data/Containers/Bundle/Application/206283E3-0903-413B-A181-B04617DA2ADB/12_TableView.app/pic/test.png

iOS启动图上图片不显示 ios提示不显示图片_显示图片

目前只能猜想就是工程对于图片资源要求放置在目录下了,谁叫自己现在还是菜鸟阶段,只能在这种摸索中踩着自己挖的坑,因为无知而犯下的年少轻狂的错误造成的需要花费很长时间来分析的问题。