2011-11-16 55 views
0

我想要TableView上的组织名称,并找到关于DetailView的更多信息。但是我不知道错误在哪里,DetailView找不到我的信息。这里是didSelectRow代码:TableView ---> DetailView

TableView

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    switch (section) { 
     case 0: 
      return 2; 
      break; 
     case 1: 
      return 2; 
      break; 
     case 2: 
      return 2; 
      break; 
    } 
    return 0; 
} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    NSString *sectionHeader = nil; if(section == 0) { 
     sectionHeader = @"Red Wine"; 
    } 
    if(section == 1) { 
     sectionHeader = @"White Wine"; 
    } 
    if(section == 2) { 
     sectionHeader = @"Sparkling Wine"; 
    } 
    return sectionHeader; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
     [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; 
     [cell.textLabel setNumberOfLines:3]; 
    } 
    switch (indexPath.section) { 
     case 0: 
      switch (indexPath.row) { 
       case 0: 
        cell.textLabel.text = @"Black Wattle Mt Benson Merlot 2008"; 
        cell.detailTextLabel.text = @"Mt Benson, South Australia."; 
        break; 
       case 1: 
        cell.textLabel.text = @"Two Hands Canny Butcher Barossa Valley Shiraz Grenache Mataro 2009"; 
        cell.detailTextLabel.text = @"Barossa Valley, South Australia."; 
        break; 
      } 
      break; 
     case 1: 
      switch (indexPath.row) { 
       case 0: 
        cell.textLabel.text = @"Amberton Lizard Sauvignon Blanc Semillon 2011"; 
        cell.detailTextLabel.text = @"South Eastern Australia."; 
        break; 
       case 1: 
        cell.textLabel.text = @"Vasse Felix Margaret River Chardonnay Margaret River"; 
        cell.detailTextLabel.text = @"Western Australia."; 
       break;   } 
      break; 
     case 2: 
      switch (indexPath.row) { 
       case 0: 
        cell.textLabel.text = @"Janisson Fils Brut Non Vintage Champagne"; 
        cell.detailTextLabel.text = @"Champagne, France."; 
        break; 
       case 3: 
        cell.textLabel.text = @"Francois Montand Brut Blanc De Blancs NV"; 
        cell.detailTextLabel.text = @"Premium French sparkling vineyard areas."; 
        break; 
      } 
      break; 
    } 
    return cell; 
} 

-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    DetailViewController *ViewController = [[DetailViewController alloc] init]; 

    ViewController.Wine = [indexPath section]; 

    [self.navigationController pushViewController:ViewController animated:YES]; 
} 

DetailView

- (void)viewDidLoad{  
[super viewDidLoad]; 
switch (Wine) { 
    case 0: 
     switch (Wine) { 
      case 0: 
       self.navigationItem.title = @"Black Wattle Mt Benson Merlot 2008"; 
       WineTextView.text = @"Alcohol: 14.5%\n" 
       "\n" 
       "Foods: Pan grilled fillet mignon with buttered mushrooms and silky mashed potatoes.\n"; 
       break; 
      case 1: 
       self.navigationItem.title = @"Two Hands Canny Butcher Barossa Valley Shiraz Grenache Mataro 2009"; 
       WineTextView.text = @"Alcohol: 14.2%\n" 
       "\n" 
       "Foods: Enjoy with beef stew and winter vegetables.\n"; 
       break; 

      default: 
       break; 
     } 
     break; 

    case 1: 
     switch (Wine) { 
      case 0: 
       self.navigationItem.title = @"Amberton Lizard Sauvignon Blanc Semillon 2011"; 
       WineTextView.text = @"Alcohol: 14.5%\n" 
       "\n" 
       "Foods: Pan grilled fillet mignon with buttered mushrooms and silky mashed potatoes.\n"; 
       break; 
      case 1: 
       self.navigationItem.title = @"Vasse Felix Margaret River Chardonnay Margaret River"; 
       WineTextView.text = @"Alcohol: 12%\n" 
       "\n" 
       "Foods: Enjoy with Chinese roast duck salad.\n"; 
       break; 
      default: 
       break; 
     } 
     break; 

    case 2: 
     switch (Wine) { 
      case 0: 
       self.navigationItem.title = @"Janisson Fils Brut Non Vintage Champagne"; 
       WineTextView.text = @"Alcohol: 12%\n" 
       "\n" 
       "Foods: Ideal aperitif style, to accompany canapés and hors doeuvres.\n"; 
       break; 
      case 1: 
       self.navigationItem.title = @"Francois Montand Brut Blanc De Blancs NV"; 
       WineTextView.text = @"Alcohol: 12%\n" 
       "\n" 
       "Foods: Apéritif, fish, and creamy dishes..\n"; 
       break; 
      default: 
       break; 
     } 
    default: 
     break; 
} 
+1

写两个相同的嵌套'switch'块(在viewDidLoad中)是什么原因?这段代码的一半永远不会被调用。 – beryllium

+0

为什么会发生?看起来你有内存泄漏(你分配一个'DetailViewController',但从来没有'释放它)。 – trojanfoe

回答

0

至少你在DetailView代码有对同一个变量Wine切换两个嵌套switch语句。例如,这导致“两只手Canny Butcher Barossa Valley”无法到达,因为Wine不能同时为零和一个。也许你打算使用两个变量,并存储在DetailView中使用的部分和行。

在任何情况下,我会建议删除数据重复并将所有内容存储在一个地方。例如,如果您将所有酒信息存储在NSArray中,则可以使用此数组检索数据而不使用大型案例语句。这也将允许将固定列表交换为从本地数据库或甚至以后的网络检索的东西。

如果,例如,创建了自己的类WineInformation其中包含了葡萄酒的各个方面属性(名称,酒精度,推荐的食物),你可以简单地传递WineInformation对象对于选择的行你DetailView,然后这些显示详细信息。这样您就不必处理索引路径或DetailView中的任何内容,只需集中展示提交的酒。

相关问题