来自Three20的自定义细节图像视图

时间:2011-09-25 18:35:49

标签: iphone ios three20

我对Three20很新。我已经关注了ray wenderlich的好introduction to three20以及three20框架中的示例。当我单击缩略图视图中的缩略图(TTThumbsViewController的子类)以启动详细信息视图时,标准详细信息图像视图(由TTPhotoViewController或其超类部署)。我想使用我自己的Details View实现而不是默认。我在启动TTThumbsViewControllerTTThumbsViewControllerDelegate方法的子类时输入以下代码:

- (id)initWithDelegate:(id<TTThumbsViewControllerDelegate>)delegate {
    [super initWithDelegate:delegate];
    return self;
}

- (void)thumbsViewController: (TTThumbsViewController*)controller 
              didSelectPhoto: (id<TTPhoto>)photo {
    [navigationController.pushViewController:photoDetailViewController 
                                    animated:Yes];
}

但默认TTPhotoViewController视图仍然占优势。当我在委托方法中放置NSLog时。我发现这个方法被调用了。我认为有人已经在TTThumViewController设置了另一位代表?有人可以推荐一种方式来显示我的详细照片视图吗?我可以使用另一个拇指视图控制器吗?任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

我对这一切都很陌生(编码等),但我会分享我发现的内容。通过查找ttthumbsviewcontroller的定义,我能够找到以下方法(错误的术语?): -

- (void)thumbsTableViewCell:(TTThumbsTableViewCell*)cell didSelectPhoto:(id<TTPhoto>)photo {
  [_delegate thumbsViewController:self didSelectPhoto:photo];

  BOOL shouldNavigate = YES;
  if ([_delegate respondsToSelector:@selector(thumbsViewController:shouldNavigateToPhoto:)]) {
    shouldNavigate = [_delegate thumbsViewController:self shouldNavigateToPhoto:photo];
  }

  if (shouldNavigate) {
    NSString* URL = [self URLForPhoto:photo];
    if (URL) {
      TTOpenURLFromView(URL, self.view);

    } else {
      TTPhotoViewController* controller = [self createPhotoViewController];
      controller.centerPhoto = photo;
      [self.navigationController pushViewController:controller animated:YES];
    }
  }
}

在else语句中,我发现这称为photoviewcontroller的创建。通过在我自己的代码的实际主体中调用此方法(?)并在else语句中更改主体,我能够添加自定义详细信息视图。在ttthumbsnailviewcontroller的定义下,您可以发现creatPhotoViewController调用PhotoViewController的启动,因此在代码体中调用该方法(?)并初始化另一个视图也有效。

如果有人能够解释这是否是一种很好的方法(我感觉不是这样),我们将不胜感激。另外,为什么将方法放在代码体中会覆盖那里的调用。