我的应用程序是一个简单的Recipebook来理解UITableViewControllers。该应用程序包含两个UITableViewControllers。第一个UITableViewController包含一个UITableView,其中包含配方名称列表。如果选择一个单元格,您将转到第二个UITableViewController。第二个UITableViewController包含一个UITableView,其中包含一些成分列表。
该应用程序包含以下类:
RecipeObject类包含两个属性。 NSString类型的一个属性,带有配方名称。另一种属性是NSArray类型的成分。 RecipeObject对象位于RecipeData类中。
RecipeObject *recipe1 = [[RecipeObject alloc]init];
recipe1.name = @"Fresh Coconut Cake";
recipe1.ingredients = [NSArray arrayWithObjects:@"Coconut cups", @"Milk", @"Baking powder", @"Butter", @"Sugar", @"Eggs", nil];
在RecipeTableViewController中调用RecipeData以在tableView中显示配方名称。
从RecipeData类到RecipeTableViewController的消息:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.recipes = [RecipeData allRecipes];}
在tableView中显示名称:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellIdentifier = @"recipeCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
RecipeObject *recipes = [self.recipes objectAtIndex:indexPath.row];
cell.textLabel.text = recipes.name;
return cell;
}
如何将recipe1.ingredients数组添加到IngredientsTableViewController?
非常感谢任何帮助!
答案 0 :(得分:0)
选择配方时执行segue。在准备segue方法时,选择所选配方并将成分传递给ingredientsTableViewController。 与此非常相似:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[self performSegueWithIdentifier:@"to_Ingredients" sender:self];
}
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"to_Ingredients"]) {
IngredientTableViewController *ingredientsTableViewController = (IngredientTableViewController *)[segue destinationController];
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
RecipeObject *recipe = [self.recipes objectAtIndex:indexPath.row];
ingredientsTableViewController.ingredients = recipe.ingredients;
}
}
如果您不使用设置此segue的故事板,您只需要第一个应该如下所示的方法:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
IngredientTableViewController *ingredientsTableViewController = [[IngredientTableViewController alloc]init];
RecipeObject *recipe = [self.recipes objectAtIndex:indexPath.row];
ingredientsTableViewController.ingredients = recipe.ingredients;
[self showDetailViewController:ingredientsTableViewController sender:self]
}