iphone开发很新,我似乎无法弄清楚为什么会这样。我很确定它有一些事实,因为boardView是nill它会创建一个新的。但我将图像应用于新形成的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
答案 0 :(得分:3)
你可以添加这一行虽然它有点黑客。您必须只访问viewcontroller的视图以便创建它。您可以通过修改任何视图属性来避免编译器警告。我建议做以下事情。
self.boardView.view.hidden = NO;
我遇到了这个问题,你所要做的就是调用要创建的视图。即使像self.boardView.view;
之类的简单行应该足够,但要避免编译器警告更改隐藏属性。
答案 1 :(得分:2)
虽然您创建了BoardView控制器,但其视图层次结构可能尚未创建 - 只有在显示控制器时才可以启动它。因此,当您第一次尝试显示它的所有UI元素仍然等于nil和您的调用
时self.boardView.imageView.image = theImage;
什么都不做。
作为一种可能的解决方案,将UIImage作为BoardView控制器的独立属性,将其设置为didSelectRowAtIndexPath方法,并在确定创建了imageView时将图像分配给imageView,例如:在控制器的viewWillAppear:
方法