You need to add the UIImageView as a property of the UITableviewCell subclass. That way in cellForRowAtIndexPath you just say myCellInstance.profilePicView.image = ...
Have a look at my answer here on how I added textfields as cell subviews. Look specifically at the override for initWithStyle:reusableIdentifier:
in the PersonCell class. No use of prototype cells in storyboard, no use of viewWithTag, just as you want.
Here is what the cellForRowAtIndexPath would look like if the Person class had a profile pic :
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
PersonCell *cell = nil;
cell = [tableView dequeueReusableCellWithIdentifier: @"CellWithNameAndSurname"];
if(!cell)
{
cell = [[PersonCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellWithNameAndSurname"];
cell.contentView.backgroundColor = [[UIColor blueColor] colorWithAlphaComponent: 0.08f];
cell.delegate = self;
}
//this should be outside the above if statement!
Person *respectivePerson = _peopleArray[indexPath.row];
cell.profilePicView.image = respectivePerson.profilePic;
cell.nameTextField.text = respectivePerson.name;
cell.surnameTextField.text = respectivePerson.surname;
cell.positionLabel.text = [NSString stringWithFormat:@"%i", (int)indexPath.row];
return cell;
}