2011-11-09 11 views
1

私はcellForRowAtIndexPathのテーブルビューのデリゲートメソッドiPhone:テーブルビューcellForRowAtIndexPathメソッドの問題

@interface EventListView : UIViewController <UITableViewDelegate, UITableViewDataSource> 

IBOutlet UITableView *tblView; 
NSMutableArray *arr_EventValues,*arr_Event_Details; 
NSMutableArray *arr_EventListDetails; 

@property(nonatomic, retain)NSMutableArray *arr_EventValues,*arr_EventListDetails, *arr_Event_Details; 
@property(nonatomic, retain)UITableView *tblView; 

- (void)viewDidLoad 
{ 
    appdelegate = (VibesGuideAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    ViewCalendar = [[CalendarView alloc] initWithNibName:@"CalendarView" bundle:[NSBundle mainBundle]]; 
    [self.navigationController.navigationBar setHidden:YES]; 
    self.arr_Event_Details = [[NSMutableArray alloc] init]; 
    self.arr_EventValues = [[NSMutableArray alloc] init]; 
    [super viewDidLoad]; 
} 

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

// Customize the number of rows in the table view. 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    if ([self.arr_EventListDetails count] > 0) 
    { 
     return [self.arr_EventListDetails count]; 
    } 
    return 0; 
} 

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    // ------------------------------- Custom cell ------------------------------ 
    Customcell *cell = (Customcell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    cell = [[[Customcell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 

    cell.textLabel.text = @"Hello";  
    return cell; 
} 

*でクラッシュする問題に直面しています - [EventListViewのtableView:cellForRowAtIndexPath:]:メッセージが0x60e01b0割り当て解除インスタンスに送信し、私が使用しxibからのテーブルビューとすべての接続を設定し、メソッドのnumberOfRowsInSectionの配列値を取得しましたが、cellForRowAtIndexPathメソッドでは呼び出されませんので、私の問題を考えてください...

ありがとうございます。

+1

私はいくつかのあなたのオブジェクト – Ron

+0

いいえ私は任意のアイデアをリリースオブジェクトではないリリースすると思う?? –

+0

ここにあなたのコードを入れてください。 – Ron

答えて

0

チェックこの1:

表のデータソースとデリゲートを設定したり、されていません。 cellForRowAtIndexPathで使用されている配列は、propertyで適切に設定され、selfとともに使用されます。名。

+0

私は既にすべての接続を設定しました –

+0

あなたのコードをここに投稿できますか? –

2

まず、あなたのいくつかの変数が解放されるようです。あなたはそれが適切に割り当てられていることを確認してください。 @propertyを宣言した場合は、変数をself.variableとして使用することをお勧めします。プロパティの宣言にはretain、IOSの場合は5 strongを使用できます。

NSZombieEnabledYESに設定すると、変数が解放されるかどうかを確認できます。ゾンビを有効にすると、割り当て解除されたオブジェクトへのメッセージは、もはや不思議な挙動をすることも、理解しにくい方法でクラッシュすることもなくなり、代わりにメッセージを記録し、予測可能でデバッガをブレークポイント可能な形で死にます。次の手順でNSZombieEnabledを設定できます。

上記のメニューバーから[製品]を選択してください。 alt/optionキーを押しながら "Test ..."または "Run ..."を選択します。 「引数」タブに移動し、「環境変数」セクションにNSZombieEnabled YESを追加します。

2

あなたテーブルビュー自体がすでにをリリースしている - エラーメッセージは、テーブルビューの割り当て解除インスタンスにcellForRowAtIndexPathメッセージを送ることを言う - ので、あなたの問題は、EventListViewを保持または解放しないのどこかにあるとすることはできませんここに表示されているコードに表示されます。

0

まず、セルをデキューして新しいセルを作成します。これは良い方法ではありません。セルをデキューできる場合は、新しいセルを作成しないでください。

Customcell *cell = (Customcell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

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

は、この問題を解決し、あなたはまだ同じ問題に実行している場合、私が知っている:あなたはこのような何かを持っている必要があります。

関連する問題