下一个视图第一次显示错误的图像

问题描述

| iPhone开发非常新,我似乎无法弄清楚为什么会这样。我很确定它与boardView无关,它创建了一个新的东西。但是我将图像应用到新形成的imageView上,所以我不确定发生了什么。 就像我说的,一切正常。我得到我的物品清单,单击一个物品,它会转到具有正确图像的下一页(第一次除外)。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSInteger row = [indexPath row];

    if(self.boardView == nil){
        BoardView *aboardView = [[BoardView alloc]initWithNibName:@\"BoardView\" bundle:nil];
        self.boardView = aboardView;
        [aboardView release];
    } 

    Nsstring *filePath = [[NSBundle mainBundle] pathForResource:[sNowBoardArray objectAtIndex:row] ofType:@\"png\"];
    UIImage *theImage = [[UIImage alloc] initWithContentsOfFile:filePath];
    self.boardView.imageView.image = theImage;

    [theImage release];
    [self.navigationController pushViewController:self.boardView animated:YES];
}
boardView几乎是一个空白的UIViewController,除了具有添加的imageView     

解决方法

您可以添加此行,尽管有点麻烦。您只需要访问viewcontroller的视图即可创建它。您可以通过修改任何views属性来避免编译器警告。我建议执行以下操作。
self.boardView.view.hidden = NO;
我遇到了这个问题,您要做的就是调用要创建的视图。即使像“ 2”这样的简单行就足够了,为避免编译器警告更改隐藏属性。     ,尽管您创建了BoardView控制器,但可能尚未创建其视图层次结构-仅在显示控制器时才可以启动它。因此,当您尝试首次显示它时,其所有UI元素仍等于nil,并且您的调用
self.boardView.imageView.image = theImage;
什么也没做。 作为一种可能的解决方案,可以将UIImage用作BoardView控制器的单独属性,在didSelectRowAtIndexPath方法中进行设置,并在确定已创建imageView时将图像分配给imageView,例如在控制器的
viewWillAppear:
方法中