2

我使用包含字典数组的 plist 通过 MutableArray 填充 MainTableViewController。当一个单元格被选中时,reprecented 字典被传递给 DetailViewController,reprecented 字典中的字符串的值被显示出来。我在情节提要的 DetailView 中添加了一个按钮,我希望这个按钮将表示的字典发送到收藏夹选项卡,该选项卡称为收藏夹表视图控制器。我正在想办法做到这一点,但我是编程新手,所以我不得不征求意见。

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

1:按钮在reprecented字典中将布尔值更改为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 个单元格,其值来自我按下“添加到收藏夹”按钮的 DetailViewController 中最后一个对象的键值:“名称”。例如,如果我将“Gato Negro”添加到收藏夹,它会在 20 个单元格中显示“Gato Negro”。如果我随后将“Luna”添加到收藏夹,它会在 FavoritesViewController 的 20 个单元格中显示“Luna”。

4

1 回答 1

0

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

[[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];
                                              }];
于 2012-07-13T13:30:33.823 回答