使用XCode 4将plist字典添加到“收藏夹”选项卡(TableView)

时间:2012-07-12 21:44:05

标签: iphone xcode dictionary plist favorites

我使用包含字典数组的plist通过MutableArray填充MainTableViewController。选择单元格后,会将重新呈现的字典传递给DetailViewController,其中显示了重新显示的字典中字符串的值。我在故事板中为DetailView添加了一个按钮,我希望这个按钮将重新设计的字典发送到“收藏夹”选项卡,该选项卡名为FavoritesTableViewController。我正在考虑如何做到这一点,但我是编程的新手,所以我不得不寻求建议。

我想出了两种可行的方法。我可能离正确的答案很远,但至少我在想。

1:该按钮在一个重新设计的字典中将一个布尔值更改为yes,并且在FavoritesViewController中的原型单元被告知显示带有boolean = yes的字典。

2:该按钮将字典复制到带有收藏夹的新plist,显示在收藏夹表格视图中。

但我真的不知道......

编辑:

到目前为止,在DetailViewController中的代码:

-(IBAction)FavoriteButton:(id)sender
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"ItemSelected"
                                                    object:selectedObject];


}
到目前为止,

代码显示了在FavoritesViewController中的葡萄酒:

[[NSNotificationCenter defaultCenter] addObserverForName:@"ItemSelected"
                                                  object:nil
                                                   queue:[NSOperationQueue mainQueue]
                                              usingBlock:^(NSNotification* notif) {
                                                  [favoritedObjects release];
                                                  favoritedObjects = [[notif object] retain];
                                                  [self.tableView reloadData];
                                              }];

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [favoritedObjects count];
}

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

// Configure the cell...

    NSString *cellValue = [favoritedObjects valueForKey:@"Name"];
    cell.textlabel.text = cellValue;

    return cell;
}

这显示了20个单元格,其值来自Key:来自DetailViewController中最后一个Object的“Name”,我按下了“添加到收藏夹”按钮。例如,如果我将“Gato Negro”添加到收藏夹,它会在20个单元格中显示“Gato Negro”。如果我然后将“Luna”添加到fav,它会在FavoritesViewController的20个单元格中显示“Luna”。

1 个答案:

答案 0 :(得分:0)

如何发布通知并将所选字典作为objectuserInfo传递?

[[NSNotificationCenter defaultCenter] postNotificationName:@"ItemSelected"
                                                    object:mySelectedDictionary];

FavoritesViewController中,您只需订阅此通知(例如,在init方法中),就像这样:

[[NSNotificationCenter defaultCenter] addObserverForName:@"ItemSelected"
                                                  object:nil
                                                   queue:[NSOperationQueue mainQueue]
                                              usingBlock:^(NSNotification* notif) {
                                                  [dictionaryToShow release];
                                                  dictionaryToShow = [[notif object] retain];
                                                  [self.tableView reloadData];
                                              }];