Вас смущает асинхронность.Если бы loadImageFromURL:
были синхронными, например, обертка sendSynchronousRequest:returningResponse:error:
, ваш код работал бы так, как вы ожидаете;loadImageFromURL:
будет блокироваться во время выборки и будет возвращаться при заполнении delta
.
Однако все это асинхронно, так что вам действительно нужно реализовать connectionDidFinishLoading:
в вашем делегате (что в данном случаеэто self
), и он должен установить cell.imageView.image
там.
Переписав часть вашего кода соответствующим образом (я предполагаю, что вы удалили посторонний код в tableView:cellForRowAtIndexPath:
для целей этого примера):
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSURL *urlink=[NSURL URLWithString:[[objectsForImages objectForKey:[arrayOfCharacters objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row]];
[self loadImageFromURL:urlink];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
UIImage *imageForAz=[UIImage imageWithData:delta];
cell.imageView.image=imageForAz;
}
Ознакомьтесь с Руководством по программированию системы загрузки URL на NSURLConnection для получения более подробной информации / примеров.