我对Three20很新。我已经关注了ray wenderlich的好introduction to three20以及three20框架中的示例。当我单击缩略图视图中的缩略图(TTThumbsViewController
的子类)以启动详细信息视图时,标准详细信息图像视图(由TTPhotoViewController
或其超类部署)。我想使用我自己的Details View实现而不是默认。我在启动TTThumbsViewController
和TTThumbsViewControllerDelegate
方法的子类时输入以下代码:
- (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
设置了另一位代表?有人可以推荐一种方式来显示我的详细照片视图吗?我可以使用另一个拇指视图控制器吗?任何建议将不胜感激。
答案 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的启动,因此在代码体中调用该方法(?)并初始化另一个视图也有效。
如果有人能够解释这是否是一种很好的方法(我感觉不是这样),我们将不胜感激。另外,为什么将方法放在代码体中会覆盖那里的调用。