0

複数のビューを保持するスクロールビューに問題があります。問題は、サブビューがリリースされていることだと思います。サブビューにボタンがあり、ボタンをクリックするとこのエラーが発生します。[GraphDisplayViewController performSelector:withObject:withObject:]:

割り当て解除されたインスタンスに送信されたメッセージ

。サブビューが1つしかない場合は、プロパティを使用するだけでこれは機能しますが、サブビューの数が異なるため(1つ以上)、機能せず、これを解決する方法がわかりません。

現在、最初はすべてのビューを一度にロードしています。一度に1つのサブビューのみをロードし、そのビューにプロパティを割り当てる作業を行っていますが、それが機能するかどうかはわかりません。

私のレイアウトは次のとおりです。親ビュー(DetailViewController)にはscrollviewが含まれ、views(GraphDisplayViewController)をscrollviewに追加し、サブビューはそれぞれビュー(GraphView)をロードします。

どんな助けやアドバイスも大歓迎です。詳細が必要な場合はお知らせください。お時間をいただきありがとうございます。

サブビューを追加する方法のコードサンプル、

DetailViewController

- (void)loadScrollViewWithPage:(int)page
{
if (page < 0) return;
if (page >= pageControl.numberOfPages) return;

subView = [viewControllers objectAtIndex:page];   
NSString *description;
NSString *packsize;
if ((NSNull *)subView == [NSNull null]) 
{
    subView = [[GraphDisplayViewController alloc] initWithNibName:@"GraphDisplayViewController" bundle:nil];
    [viewControllers replaceObjectAtIndex:page withObject:subView];
    subView = [[GraphDisplayViewController alloc] init];
    subView.molecule = moleculeName;
    subView.description = description;    
    subView.dataArray = moleculePrices;

}
else
{
    return;
}

// add the controller's view to the scroll view
if (nil == subView.view.superview) 
{
    CGRect frame = scrollView.frame;
    frame.origin.x = frame.size.width * page;
    frame.origin.y = 0;
    subView.view.frame = frame;
    [scrollView addSubview:subView.view];
} 
}

更新 コードに誤りがあり、それが何かを解決するかどうかをテストしました

subView = [[GraphDisplayViewController alloc] initWithNibName:@"GraphDisplayViewController" bundle:nil];
[viewControllers replaceObjectAtIndex:page withObject:subView];
subView = [[GraphDisplayViewController alloc] init]; <- Mistake
4

2 に答える 2

0

GraphDisplayViewController割り当てられたsubView変数を保持していません。したがって、ある時点でそれを失っています。オブジェクトを次

のようにフェッチしていることがわかるので、オブジェクト も格納する必要があります(実装したロジックはわかりませんが、割り当てられた各コードのurコードで実行する必要があります:また、変数もすべてがスムーズに機能するように保持されます。)直面しているクラッシュを回避するために保持できるように配列。 これがあなたのために働くことを願っています..幸運を祈りますsubViewsubView = [viewControllers objectAtIndex:page];viewControllerssubView[viewControllers replaceObjectAtIndex:page withObject:subView];viewControllers


于 2012-06-27T13:42:48.890 に答える
0

コードに単純なエラーがありました。ビューを2回初期化しました。

subView = [[GraphDisplayViewController alloc] initWithNibName:@"GraphDisplayViewController" bundle:nil];
subView = [[GraphDisplayViewController alloc] init]; <- Mistake
于 2012-06-28T15:47:28.527 に答える