0

私は、iPhone 用の簡単な署名キャプチャ アプリケーションを作成する初心者です。

このアプリケーションは、ユーザーが配達物が入力されたテーブル ビューに移動できるようにするためのサポートです。次に、現在配信している配信をクリックします。

EXC_BAD_ACCESSテーブル ビューを読み込もうとするとエラーが発生するので、Zombie Diagnostic Instrument を実行して、問題が見つかるかどうかを確認しました。ゾンビエラーが発生しましたが、「責任ある発信者」のどれも、私が書いたコードを参照していません。

したがって、これまでのアプリの基本的な流れは、3 つのボタンを持つビューがあり、そのうちの 1 つがテーブル ビューにつながり、それを使用するとクラッシュします。

これは、ビュー スイッチのコードです。

-(IBAction) deliveriesButtonClicked:(id)sender {
    if (self.deliveriesViewer == nil) {
        DeliveriesViewerController *aOptionController = [[DeliveriesViewerController alloc] initWithNibName: @"DeliveriesViewerController" bundle: nil];
        self.deliveriesViewer = aOptionController;
        [aOptionController release];
    }

    [self.mainNavigationController.view removeFromSuperview];
    [self.view insertSubview:self.deliveriesViewer.view atIndex:0];

}

これは、切り替え先の配信クラスのコードです

ヘッダ:

#import < UIKit/UIKit.h >

@interface DeliveriesViewerController : UITableViewController <UITableViewDelegate> {
    IBOutlet UITableView *myTable;
}

@property (nonatomic, retain) UITableView *myTable;

@end

実装:

#import "DeliveriesViewerController.h"
#import "AppDelegate.h"

@implementation DeliveriesViewerController

@synthesize myTable;

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}    

- (void)viewDidUnload {

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    return appDelegate.invoices.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *MyIdentifier = @"MyIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
    }

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    cell.text = [appDelegate.invoices objectAtIndex:indexPath.row];
    return cell;
}

@end

誰かがこの問題を見つけるのを手伝ってくれるなら、それは大歓迎です。

4

1 に答える 1

1

私は問題を理解しました。

問題は、テーブルビューのデータソースとデリゲートが間違っていたことです。デフォルトでは、ファイル所有者ではなくテーブルビュー自体に設定されていました。

私の問題に関心を示してくれてありがとう。

于 2011-12-09T00:00:05.930 に答える