2011-08-10 84 views
4

我想添加一個tableview,所以當有人按下某個按鈕時,視圖會切換到幾個選擇的tableview。添加TableView子視圖崩潰的應用程序

這裏是我的按鈕代碼:

LevelChoice.h 代碼:

@interface LevelChoice : UITableViewController { 
    NSArray *choices; 
} 

LevelChoice

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

這裏是代碼從我的UITableViewController的子卡.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

嘗試刪除此代碼[level release];並看看它是否有效。 – Robin

+1

我認爲羅賓已經說得對,不要釋放控制器。同樣爲了呈現一個桌面視圖,你必須保留它的控制器。因此,您可以將控制器作爲模態視圖呈現,您也可以將其釋放。但是,由於您只是呈現應用程序崩潰的視圖。 –

+0

錯誤信息是什麼樣的? – tilo

回答

1

區分控制器和視圖。您可以

  1. 無論是目前的UITableViewControllerpresentModalViewController:animated:pushViewController:animated:。 (是的,在這種情況下,你可以釋放它。)
  2. 或者只是在你現有的視圖控制器中保留一個UITableView,並根據需要使用hidden屬性顯示或隱藏它。當然,您需要實施表格的datasourcedelegate方法。
相關問題