1

ページ間をcontentviewcontrollerスライドするとアプリがクラッシュします。
以下は私のコードです:

contentviewcontroller.m

#import "ContentViewController.h"

@interface ContentViewController ()

@end

@implementation ContentViewController
@synthesize m_CtrlWebview,DocumentPath;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    m_CtrlWebview.scrollView.pagingEnabled=YES;
    m_CtrlWebview.scrollView.bounces=NO;
    m_CtrlWebview.scalesPageToFit=YES;
    m_CtrlWebview.backgroundColor=[UIColor clearColor];
    //m_CtrlWebview.scrollView.zooming=NO;
    m_CtrlWebview.scrollView.zoomScale=1.0;



    NSURL *url = [NSURL fileURLWithPath:DocumentPath isDirectory:NO];

    [m_CtrlWebview loadRequest:[NSURLRequest requestWithURL:url]];
}


-(void)dealloc
{
    [super dealloc];
}
- (void)viewDidUnload
{
    //[m_CtrlWebview stopLoading];
    [m_CtrlWebview release];
    [super viewDidUnload];
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

rootviewcontroller で:

  #pragma mark - UIPageViewControllerDataSource Methods

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
      viewControllerBeforeViewController:(UIViewController *)viewController
{
    NSUInteger currentIndex = [self.modelArray indexOfObject:[(ContentViewController *)viewController DocumentPath]];
    if(currentIndex == 0)
    {
        return nil;
    }

    ContentViewController *firstViewController = [self viewControllerAtIndex:currentIndex - 1];
    // ContentViewController *secondViewController = [self viewControllerAtIndex:x+1 ];


    return firstViewController;



}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
       viewControllerAfterViewController:(UIViewController *)viewController
{
    NSUInteger currentIndex = [self.modelArray indexOfObject:[(ContentViewController *)viewController DocumentPath]];
    if(currentIndex == self.modelArray.count-1)
    {
        return nil;
    }
    NSString *Path=[self.modelArray objectAtIndex:currentIndex + 1];
     if  (![[NSFileManager defaultManager] fileExistsAtPath:Path])
     {
        return nil; 
     }
    else
    {
        ContentViewController *firstViewController = [self viewControllerAtIndex:currentIndex + 1];

        return firstViewController;
    }

}

- (ContentViewController *)viewControllerAtIndex:(NSUInteger)index {

    if (([self.modelArray count] == 0) || (index >= [self.modelArray count])) {
        return nil;
    }
    ContentViewController *dataViewController;
    dataViewController = [[ContentViewController alloc]initWithNibName:@"ContentViewController" bundle:nil];

    dataViewController.DocumentPath = [self.modelArray objectAtIndex:index];
    return dataViewController;

}

この問題を解決するにはどうすればよいですか? また、Web ビューのズームを無効にする方法を教えてください。よろしくお願いします。

4

2 に答える 2

1
return [dataViewController autorelease];

上記の行は- (ContentViewController *)viewControllerAtIndex:(NSUInteger)index私の問題を解決しました。

于 2013-01-21T04:53:06.263 に答える
0

このコードから、アプリがクラッシュする理由はよくわかりません。エラーをより具体的にキャッチするには、Xcode に例外ブレークポイントを追加します。Xcode 4.5 でそれを行う手順

  1. 左ペインで「Breakpoint Navigator」を選択します。

  2. 左下の「+」ボタンをタップ。

  3. ポップアップ メニューから、[例外ブレークポイントの追加] を選択します。

  4. この設定を行った後にアプリがクラッシュした場合は、スタック トレースをチェックして、関数のいずれかがスタック トレースにあるかどうかを確認してください。

また、ゾンビ オブジェクトを有効にして、例外をログに記録します。

  1. 製品に移動 -> スキームの編集
  2. 左ペインから [Run YourApp.app] を選択します。
  3. 右側のペインで [診断] を選択します。
  4. [ゾンビ オブジェクトを有効にする] と [例外を記録する] のチェック ボックスをオンにします。これにより、アプリがクラッシュしたときにコンソールに役立つ情報が出力される場合があります。

これが問題の解決に役立つことを願っています。

于 2013-01-14T13:11:20.613 に答える