2012-02-10 8 views
2

XCode 4.2バージョンでiOS 5にアップグレードしました。 アップグレードしたので、私は適切なworkignテーブルビューコントローラを作成することができません。iOS 5でTableViewControllerがスクロールせず、didSelectRowAtIndexPathを呼び出さない

1)テーブル・ビューは、デバイス上に示されるが、私は上にスクロールしようとすると、iがセルを選択しようとすると、didSelectRowAtIndexPathが呼び出されないエラーメッセージ

2)なしでクラッシュします。

NOTE: the same code was workign for me before upgrating to iOS5.

これはTableViewController.mは

#import "CTableViewController.h" 
@implementation CTableViewController 

@synthesize arrNames; 

-(id)initWithStyle:(UITableViewStyle)style 
{ 
    self = [super initWithStyle:style]; 
    if (self) { 
     NSLog(@"CTableViewController::initWithStyle"); 
    // Custom initialization 
} 
return self; 
} 

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    arrNames = [[NSMutableArray alloc]initWithObjects:@"Peter Frank Brauer",@"Robert Schneider",@"Winfried Walter Kem",@"Eugen Germen Bachle",@"Clara Weib",@"Heinz Guther Winkler",@"Roland Bendel",@"Swen Aschemeyer",@"Patrick Bodingmeier",nil]; 
} 

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
return 1; 
} 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return [self.arrNames count]; 
} 

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 

// Configure the cell... 
cell.textLabel.text = [self.arrNames objectAtIndex:indexPath.row]; 
cell.textLabel.font = [UIFont systemFontOfSize:16]; 
NSLog(@"CTableViewController::cellForRowAtIndexPath"); 
return cell; 
} 

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
NSLog(@"called didSelectRow method"); 

} 

@end 

ありがとうを提出するためのコードで、それはおそらく、メモリ管理の問題だよりも、それはすべてのエラーメッセージなしでクラッシュだ場合は、 Suseの

+0

私はまったく同じ問題を抱えていて、今は2週間解決しています。誰かが解決策を持っていれば!!!! –

+0

私は 'UITableView'サブクラスを使っていても同じ問題を抱えています。 – Ananth

+0

"すべての例外"ブレークポイントを有効にしていますか?これは、アプリがクラッシュする理由の詳細を示すはずです。 。 @Ananth UIViewController(UITableViewControllerではなく)でUITableViewを使用している場合は、デリゲートとデータソースを自分で設定する必要があります(ビューコントローラがUITableViewDelegateとUITableViewDataSourceプロトコルに準拠していることを宣言する必要があります) – Moxy

答えて

0

を助けてくださいそれはコードの他の部分のせいで、あるいは誤ってフォーマットされたnslogのせいで起こる可能性があります。

コンパイラは、アプリケーションを瞬時にクラッシュさせるint型の分数値を設定するなどのいくつかの明白なことに気づいていないようですが、意味のあるエラーメッセージはありません。

tableViewの実装だけでなく、コード内の日常的なものを探すようにしてください。

また、arrayWithObjectsではなくarrNamesにalloc、init(autorelease以外)を設定する特別な理由はありますか?

また、静的アナライザーを実行してください。それは助けるかもしれません。 Runボタンを押し続けるとAnalyzeボタンが現れます。

+0

私がここに来ているクラッシュエラーはEXC_BAD_ACCESSです。おそらくメモリ管理のために、そのARCのために、autoreleaseコマンドを使用することはできません。 –

0

ソースコードをコピーして新しいプロジェクトに貼り付けました。いくつかのことが私に飛び出しました。

UITableViewControllerをサブクラス化しています。 UIViewControllerをサブクラス化し、initWithStyleメソッドを削除してください。

ペン先では、tableviewデリゲートとデータソースの両方がFile's Ownerに関連付けられていることを確認してください。

まだクラッシュが発生している場合は、このコードは問題ではありません。

+0

私は彼と同じ問題を抱えています。しかし、私はそれをまったく解決することはできません、私はコードが問題ではないことに同意します。しかし、私が見ているすべてのブレークポイントとクラッシュログで、私はそれを修正する方法を知らない:( –

0

私の場合、コントローラインスタンスがローカルで宣言されていたので、ヘッダーにインスタンスが宣言されているので、delegateが失われていました。

0

最初にクラッシュする場合に行を選択する方法はありますか?

ところで、コードは問題ではないようです。 あなたのXcodeを再起動した後、これを試してみてください:

  1. ゴーあなたの開いているプロジェクトで、プロジェクトタブに
  2. クリックして選択し、得られたデータを削除
  3. をオーガナイザします。

その後、インデックスの再作成を待ちます。 (上のバーの表示と新しいインデックスターゲットのコードを見ることができます)。

通常のようにすべてターゲットとビルドを消去します。

それは私のために同様のケースで動作します。 希望します。

+0

悲しいことに、これは私にとってはうまくいかなかった。 –

関連する問題