在 Objective-C(iOS) 中以模态转场实现 SDWebImage
implement SDWebImage in modal segue in Objective-C(iOS)
我目前正在 iOS
写论文
我正在 table 查看并从我自己的网络服务中检索数据,
检索数据后,我将该数据从当前行传递到详细视图的新模式视图(摘要视图到详细视图)
请注意,我不能使用 push segue,因为我已经有一个来自 SWRevealViewController 的导航控制器,真正的问题是当我从我的网络服务获取数据时(及其工作,我可以在中看到我的图像 url NSLOG) 然后使用 sdwebimage 设置图像 url,图像不下载,我在调试视图中看到没有传入网络连接,这是我的代码
TableView.m 文件
- (void) retrieveData{
NSURL * url = [NSURL URLWithString:@getDataURL];
NSData * data = [NSData dataWithContentsOfURL:url];
JSONArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
//set up array objek wisata
ObjekwisataArray = [[NSMutableArray alloc] init];
//loop jsonArray
for (int i = 0; i < JSONArray.count; i++)
{
//add objek wisata
//IdObjek,NamaObjek,DeskripsiObjek,FotoObjek,Latitude,Longitude
NSString * IdObj = [[JSONArray objectAtIndex:i] objectForKey:@"idobjek"];
NSString * NamaObj = [[JSONArray objectAtIndex:i] objectForKey:@"nama"];
NSString * DeskripsiObj = [[JSONArray objectAtIndex:i] objectForKey:@"deskripsi"];
NSString * FotoObj = [[JSONArray objectAtIndex:i] objectForKey:@"foto"];
NSString * LatObj = [[JSONArray objectAtIndex:i] objectForKey:@"latitude"];
NSString * LongObj = [[JSONArray objectAtIndex:i] objectForKey:@"longitude"];
//untuk gambar
//add objek wisata ke array objekwisatarray
[ObjekwisataArray addObject:[[ObjectWisata alloc]initWithNama:NamaObj andDeskripsi:DeskripsiObj andFoto:FotoObj andLatitude:LatObj andLongitude:LongObj andIdObjek:IdObj]];
}
//reload data di table view
[self.tableView reloadData];
}
这是我的模式 DetailView.m 文件
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//load UI
[self setLabels];
[self getWisata:currentWisata];
[self downloadGambar];
NSURL * url = [[NSURL alloc] initWithString:currentWisata.foto];
[GambarWisata sd_setImageWithURL:url];
NSLog (@"URL FOTO : %@" , [NSString stringWithFormat:@"%@",url]);
/*
NSURL * url = [[NSURL alloc] initWithString:[currentWisata valueForKey:@"foto"]];
NSURL * temp = [[NSURL alloc] initWithString:currentWisata.foto];
//[ImageView sd_setImageWithURL:url];
//NSString * temp = url.absoluteString;
//[ImageView sd_setImageWithURL:[NSURL URLWithString:temp]];
[GambarWisata sd_setImageWithURL:temp];
//logfile
NSLog (@"VALUE URL : %@" , [NSString stringWithFormat:@"%@",url]);
NSLog (@"VALUE TEMP : %@" , [NSString stringWithFormat:@"%@",temp]);
*/
backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleDone target:self action:@selector(backButton)];
self.navigationItem.leftBarButtonItem = backButton;
}
当我仅使用 url 时,它在我的主视图中用于打开图像时它实际上工作,但同样,它在模态视图 segue 中不起作用,感谢您的帮助
所以在我再次检查后,我的 url link 不包含“http://www”。前缀,所以我设法做到了,这是我的代码:
NSString *urlString = currentWisata.foto;
NSURL *webpageUrl;
if ([urlString hasPrefix:@"http://"] || [urlString hasPrefix:@"https://"]) {
webpageUrl = [NSURL URLWithString:urlString];
} else {
webpageUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.%@", urlString]];
}
案件现已结案:)
我目前正在 iOS
写论文
我正在 table 查看并从我自己的网络服务中检索数据,
检索数据后,我将该数据从当前行传递到详细视图的新模式视图(摘要视图到详细视图)
请注意,我不能使用 push segue,因为我已经有一个来自 SWRevealViewController 的导航控制器,真正的问题是当我从我的网络服务获取数据时(及其工作,我可以在中看到我的图像 url NSLOG) 然后使用 sdwebimage 设置图像 url,图像不下载,我在调试视图中看到没有传入网络连接,这是我的代码
TableView.m 文件
- (void) retrieveData{
NSURL * url = [NSURL URLWithString:@getDataURL];
NSData * data = [NSData dataWithContentsOfURL:url];
JSONArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
//set up array objek wisata
ObjekwisataArray = [[NSMutableArray alloc] init];
//loop jsonArray
for (int i = 0; i < JSONArray.count; i++)
{
//add objek wisata
//IdObjek,NamaObjek,DeskripsiObjek,FotoObjek,Latitude,Longitude
NSString * IdObj = [[JSONArray objectAtIndex:i] objectForKey:@"idobjek"];
NSString * NamaObj = [[JSONArray objectAtIndex:i] objectForKey:@"nama"];
NSString * DeskripsiObj = [[JSONArray objectAtIndex:i] objectForKey:@"deskripsi"];
NSString * FotoObj = [[JSONArray objectAtIndex:i] objectForKey:@"foto"];
NSString * LatObj = [[JSONArray objectAtIndex:i] objectForKey:@"latitude"];
NSString * LongObj = [[JSONArray objectAtIndex:i] objectForKey:@"longitude"];
//untuk gambar
//add objek wisata ke array objekwisatarray
[ObjekwisataArray addObject:[[ObjectWisata alloc]initWithNama:NamaObj andDeskripsi:DeskripsiObj andFoto:FotoObj andLatitude:LatObj andLongitude:LongObj andIdObjek:IdObj]];
}
//reload data di table view
[self.tableView reloadData];
}
这是我的模式 DetailView.m 文件
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//load UI
[self setLabels];
[self getWisata:currentWisata];
[self downloadGambar];
NSURL * url = [[NSURL alloc] initWithString:currentWisata.foto];
[GambarWisata sd_setImageWithURL:url];
NSLog (@"URL FOTO : %@" , [NSString stringWithFormat:@"%@",url]);
/*
NSURL * url = [[NSURL alloc] initWithString:[currentWisata valueForKey:@"foto"]];
NSURL * temp = [[NSURL alloc] initWithString:currentWisata.foto];
//[ImageView sd_setImageWithURL:url];
//NSString * temp = url.absoluteString;
//[ImageView sd_setImageWithURL:[NSURL URLWithString:temp]];
[GambarWisata sd_setImageWithURL:temp];
//logfile
NSLog (@"VALUE URL : %@" , [NSString stringWithFormat:@"%@",url]);
NSLog (@"VALUE TEMP : %@" , [NSString stringWithFormat:@"%@",temp]);
*/
backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleDone target:self action:@selector(backButton)];
self.navigationItem.leftBarButtonItem = backButton;
}
当我仅使用 url 时,它在我的主视图中用于打开图像时它实际上工作,但同样,它在模态视图 segue 中不起作用,感谢您的帮助
所以在我再次检查后,我的 url link 不包含“http://www”。前缀,所以我设法做到了,这是我的代码:
NSString *urlString = currentWisata.foto;
NSURL *webpageUrl;
if ([urlString hasPrefix:@"http://"] || [urlString hasPrefix:@"https://"]) {
webpageUrl = [NSURL URLWithString:urlString];
} else {
webpageUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.%@", urlString]];
}
案件现已结案:)