2011-08-10 2 views
4

テーブルビューを追加しようとしています。誰かが特定のボタンを押すと、ビューがいくつかの選択肢でテーブルビューに切り替わります。ここでTableViewサブビューがクラッシュするappを追加する

はボタンの私のコードです:ここでは

-(IBAction)buttonPressed:(id)sender 
    { 
     LevelChoice *level = [[LevelChoice alloc] initWithNibName:nil bundle:nil]; 
     [self.view addSubview:level.view]; 
     [level release]; 
    } 

は、コードされているのUITableViewControllerのサブクラス私からスナップ:

LevelChoice.h コード:

@interface LevelChoice : UITableViewController { 
    NSArray *choices; 
} 

LevelChoice .m

コード:

-(void)viewDidLoad 
{ 
    choices = [[NSArray alloc] initWithObjects:@"Level 1", @"Level 2", @"Level 3", nil]; 

    [super viewDidLoad]; 

} 

コード:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

{ 
    return 3; 
} 

-(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] autorelease]; 

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

} 

誰もが私が行方不明です何を知っていますか?

+0

このコードを削除してみてください[レベルリリース]。それが動作するかどうかを確認してください。 – Robin

+1

私はロビンがそれを正しく持っていると思う、コントローラをリリースしないでください。また、テーブルビューを表示するには、コントローラを保持する必要があります。コントローラをモーダルビューとして表示することもできます。また、コントローラをリリースすることもできます。しかし、あなたは単にビューを提示しているので、アプリケーションはクラッシュします。 –

+0

エラーメッセージはどのように表示されますか? – tilo

答えて

1

コントローラとビューを区別します。あなたは

  1. UITableViewControllerpresentModalViewController:animated:またはpushViewController:animated:とを提示することができます。 (この場合は解放できます)
  2. 、またはUITableViewを既存のビューコントローラに保持し、hiddenプロパティで必要に応じて表示または非表示にします。もちろん、テーブルにはdatasourcedelegateメソッドを実装する必要があります。
関連する問題