2013-03-28 1 views
0

я называю вид с imgView внутри Scrollview, как это с другой точки зренияEXC_BREAKPOINT при переходе обратно для просмотра с imgview в Scrollview

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
    ImageViewController *view = [[self.menus objectAtIndex:[indexPath row]] objectForKey:@"VIEW"]; 
    view.imgPath = [[self.menus objectAtIndex:[indexPath row]] objectForKey:@"PATH"]; 
    [self presentViewController:view animated:YES completion:nil]; 
} 

Тогда я показать изображение в новом виде, как эта

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 
    return self.imgView; 
} 

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    NSString *path = [[NSBundle mainBundle] pathForResource:self.imgPath ofType:@"png"]; 
    UIImage *image = [[UIImage alloc] initWithContentsOfFile:path]; 
    self.imgView = [[UIImageView alloc] initWithImage:image]; 
    self.imgView.frame = (CGRect){.origin=CGPointMake(0.0f, 0.0f), .size=image.size}; 
    [self.scrollView addSubview:self.imgView]; 
    self.scrollView.contentSize = image.size; 
    CGRect scrollViewFrame = self.scrollView.frame; 
    CGFloat scaleWidth = scrollViewFrame.size.width/self.scrollView.contentSize.width; 
    CGFloat scaleHeight = scrollViewFrame.size.height/self.scrollView.contentSize.height; 
    CGFloat minScale = MIN(scaleWidth, scaleHeight); 
    self.scrollView.minimumZoomScale = minScale; 
    self.scrollView.maximumZoomScale = 1.0f; 
    self.scrollView.zoomScale = minScale; 

    [self centerScrollViewContents]; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UITapGestureRecognizer *doubleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scrollViewDoubleTapped:)]; 
    doubleTapRecognizer.numberOfTapsRequired = 2; 
    doubleTapRecognizer.numberOfTouchesRequired = 1; 
    [self.scrollView addGestureRecognizer:doubleTapRecognizer]; 

    UITapGestureRecognizer *twoFingerTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scrollViewTwoFingerTapped:)]; 
    twoFingerTapRecognizer.numberOfTapsRequired = 1; 
    twoFingerTapRecognizer.numberOfTouchesRequired = 2; 
    [self.scrollView addGestureRecognizer:twoFingerTapRecognizer]; 
} 

- (void)centerScrollViewContents { 
    CGSize boundsSize = self.scrollView.bounds.size; 
    CGRect contentsFrame = self.imgView.frame; 

    if (contentsFrame.size.width < boundsSize.width) { 
     contentsFrame.origin.x = (boundsSize.width - contentsFrame.size.width)/2.0f; 
    } else { 
     contentsFrame.origin.x = 0.0f; 
    } 

    if (contentsFrame.size.height < boundsSize.height) { 
     contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height)/2.0f; 
    } else { 
     contentsFrame.origin.y = 0.0f; 
    } 

    self.imgView.frame = contentsFrame; 
} 

Это все работает без проблем, и я могу отклонить представление, как этот

- (IBAction)BackBtnPress:(id)sender { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

Howeve г, когда я хочу, чтобы вернуться к просмотру изображения снова с didSelectRowAtIndexPath сбои приложения и я получаю EXC_BREAKPOINT на

0x18e2756: calll 0x1a37a00     ; symbol stub for: getpid 

Я попытался отладки и она проходит через viewWillAppear с казалось бы без проблем, а затем падает

Любой идеи о том, что может быть проблемой?

Спасибо!

Редактировать

позволяя зомби не помогло, отключение дуги ничего не меняет.

ответ

1

Я установил его, создав новый ImageView, когда строка была выбрана вместо того, когда был загружен первый взгляд с Tableview, так что мой didselectrowatindexpath выглядит следующим образом

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
    ImageViewController *view = [ImageViewController alloc]; 
    view.imgPath = [[self.menus objectAtIndex:[indexPath row]] objectForKey:@"PATH"]; 
    [self presentViewController:view animated:YES completion:nil]; 
} 
Смежные вопросы