Пользовательские детали изображения с Three20 - PullRequest
0 голосов
/ 25 сентября 2011

Я довольно новый с Three20. Я следовал за хорошим знакомством Рэя Вендерлиха в Three20 и примерами в рамках Three20. Когда я щелкаю по миниатюре в виде миниатюр (подкласс TTThumbsViewController), чтобы запустить представление «Подробности», стандартное представление «Детали» (развернуто с помощью TTPhotoViewController или его суперкласса). Я хотел бы использовать мою собственную реализацию подробного представления вместо стандартной. Я положил следующий код, когда я инициировал подкласс метода 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? Может кто-нибудь порекомендовать способ отображения моего детального просмотра фотографий? Можно ли использовать другой контроллер просмотра больших пальцев? Любое предложение будет с благодарностью.

1 Ответ

0 голосов
/ 13 октября 2011

Я действительно новичок во всем этом (кодирование и т. Д.), Но я поделюсь тем, что нашел.Посмотрев определение 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 я обнаружил, что это вызывает создание контроллера photoview.Вспомнив этот метод (?) В фактическом теле моего собственного кода и изменив тело в операторе else, я смог добавить пользовательский подробный вид.Далее по определению ttthumbsnailviewcontroller вы можете обнаружить, что creatPhotoViewController вызывает инициацию PhotoViewController, поэтому вызов этого метода (?) В теле кода и инициализация другого представления также работает.

Если кто-то может объяснить, является ли это хорошим методом для этого (у меня такое ощущение, что это не так), это будет оценено.Кроме того, почему помещение метода в тело кода переопределяет вызов там.

...