1

私はiPhoneのプログラミングを試しています。このチュートリアルに従っていますが、うまくいかないようです。 私はこのチュートリアルリンクを使用します

私はコードを数回チェックしましたが、正しいようですが、アプリを実行してアプリをプッシュするtableviewcrashes. エラーなしまたはwarnings. どんな助けでも大歓迎です。これがコードです。

@implementation SimpleTableViewController
{
NSArray *tableData;
}

- (void)viewDidLoad
{
[super viewDidLoad];
// Initialize table data
tableData = [NSArray arrayWithObjects:@"one", @"Two", @"Three", @"Four", @"five",      nil];
} 


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) section
{
return [tableData count];
} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}

cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
return cell;
} 

受け取っていますEXC_BAD_ACCESS

これがバックトレース(gdb)バックトレースです

#0  0x00efe5a8 in objc_exception_throw ()
#1  0x00d62628 in +[NSException raise:format:arguments:] ()
#2  0x00d6259a in +[NSException raise:format:] ()
#3  0x00362b75 in -[UIViewController _loadViewFromNibNamed:bundle:] ()
#4  0x00360709 in -[UIViewController loadView] ()
#5  0x003605e3 in -[UIViewController view] ()
#6  0x0035ea57 in -[UIViewController contentScrollView] ()
#7  0x0036f201 in -[UINavigationController _computeAndApplyScrollContentInsetDeltaForViewController:] ()
#8  0x0036d831 in -[UINavigationController _layoutViewController:] ()
#9  0x0036eb4c in -[UINavigationController _startTransition:fromViewController:toViewController:] ()
#10 0x00369606 in -[UINavigationController _startDeferredTransitionIfNeeded] ()
#11 0x0037083e in -[UINavigationController pushViewController:transition:forceImmediate:] ()
#12 0x003694a0 in -[UINavigationController pushViewController:animated:] ()
#13 0x000022cf in -[PocketHusbandViewController displayCarView:] (self=0x4e12870, _cmd=0x31d2, sender=0x4e16f30) at /Users/wayne/Desktop/programming/Pocket Husband/Classes/PocketHusbandViewController.m:21
#14 0x002b2a6e in -[UIApplication sendAction:to:from:forEvent:] ()
#15 0x003411b5 in -[UIControl sendAction:to:forEvent:] ()
#16 0x00343647 in -[UIControl(Internal) _sendActionsForEvents:withEvent:] ()
#17 0x003421f4 in -[UIControl touchesEnded:withEvent:] ()
#18 0x002d70d1 in -[UIWindow _sendTouchesForEvent:] ()
#19 0x002b837a in -[UIApplication sendEvent:] ()
#20 0x002bd732 in _UIApplicationHandleEvent ()
#21 0x016dfa36 in PurpleEventCallback ()
#22 0x00d8b064 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#23 0x00ceb6f7 in __CFRunLoopDoSource1 ()
#24 0x00ce8983 in __CFRunLoopRun ()
#25 0x00ce8240 in CFRunLoopRunSpecific ()
#26 0x00ce8161 in CFRunLoopRunInMode ()
#27 0x016de268 in GSEventRunModal ()
#28 0x016de32d in GSEventRun ()
#29 0x002c142e in UIApplicationMain ()
#30 0x00001e90 in main (argc=1, argv=0xbfffefd4) at /Users/wayne/Desktop/programming/

ビューを呼び出すと、問題が発生する可能性があります。

-(IBAction)displayView:(id)sender {
carMainViewController *carViewController = [[carMainViewController alloc]initWithNibName:@"carMainViewController" bundle:[NSBundle mainBundle]];
[carViewController.navigationItem setTitle:@"Cars"];
[self.navigationController pushViewController:carViewController animated:YES];
[carViewController release];

}

何かご意見は?

4

2 に答える 2

1

次のコードのように配列を保持します。

 tableData = [NSArray arrayWithObjects:@"one", @"Two", @"Three", @"Four", @"five",      nil];
[tableData retain];

このコードがお役に立てば幸いです。

于 2013-09-10T05:25:05.620 に答える
0

あなたのコードは私にとって完璧に機能します。

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 

これは必須のプロトコル メソッドではありませんが、通常はアプリを適切に機能させるために存在します。もちろん、このメソッドは省略しても構いません。

クラスがUITableViewDataSourceおよびに準拠しているかどうかを確認する必要があるかもしれませんUITableViewDelegate。次に、IB のテーブルビューがデータソースを設定し、ファイル所有者に委譲しているかどうかを確認します。

ここに画像の説明を入力

編集:

ブレークポイント ナビゲーターから例外ブレークポイントを追加して、例外がスローされた正確な場所を見つけることができます。そして、より詳細なエラーログを提供してください。

ここに画像の説明を入力

于 2013-09-10T02:20:34.237 に答える