【问题标题】:ios push array to uitableviewios推送数组到uitableview
【发布时间】:2012-05-29 18:17:41
【问题描述】:

stackoverflow 上将数组推送到 tableView 单元格的最佳答案是“从更简单的事情开始”。我认为我们可以做得比这更好......

我相信我已经准备好了一切,除了我找不到从 rootView 获取数据的正确方法。见下文。

下面的代码将一个数组推送到 DetailView 控制器,其中三个单元格在一个组中,顶部单元格中带有“Get Cell Info Here”。有人可以解释我需要做什么才能将实际数据输入顶部单元格吗?谢谢

RootViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath     *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    DetailViewController *selectedCell = [[DetailViewController alloc] initWithStyle:UITableViewStyleGrouped];
    [self.navigationController pushViewController:selectedCell animated:YES];

}

DetailViewController.h

@interface DetailViewController : UITableViewController {

    NSArray *displayCell;

}
@end

DetailViewController.m

- (void)viewWillAppear:(BOOL)animated
{

    //Display the selected cell data

    displayCell = [[NSArray alloc] initWithObjects:@"Get Cell Info Here", nil];  

    //Set the title of the navigation bar
    self.navigationItem.title = @"wtf";
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 


    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil] ;

    // Make cell unselectable
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 

    NSString *cellText = nil;

    switch ( indexPath.row ) {
        case 0: {
            cellText = [displayCell objectAtIndex:indexPath.row]; 

            break ;
        }
        case 1: {

            break ; 
        }       
        case 2: {

            break ;
            default:
                break;
            }               
        }

        cell.textLabel.text = cellText;
        return cell;

}

【问题讨论】:

  • 我想你想将 RootViewController 的数组传递给 DetailView ,对吗??
  • 您是否尝试将您的阵列发送到详细视图?阐明。在我看来,您有一个表格视图,您想从数组中填充并在单击它的详细视图时发送实际数组。为我们澄清。
  • 哇,好快……是的,我没有进入数据……我有三个信息,标题、细节、图片。它们都显示在数组中,现在我试图让它们显示在 DetailViewController 的一个单元格中,但这次它将显示完整的细节,而不是仅显示 2 行和截断的尾部。
  • 我看到的每个“详细视图控制器”教程都是关于推送到白屏并使用 UILabel 显示数组数据。我希望在更大的单元格中显示数组数据(我已经自定义了)。基本上是在每个视图上保持“分组外观”,比如(除了)Twitter。

标签: iphone objective-c ios arrays uitableview


【解决方案1】:

为DetailViewController添加一个属性如下:

@property (nonatomic, retain) NSArray *passedItems;

然后让根视图控制器按如下方式传递项目:

selectedCell.passedItems = passedItems; // passedItems is array in rootview controller

然后就可以在DetailedViewController中使用passedItems了。

【讨论】:

  • 好的,现在 (selectedCell.passedItems = passItems; ) 去哪儿了?在 didSelectRow..?怎么样?
  • 我只使用了“selectedCell”来推送didSelectRowAtIndexPath中的视图。要在 RootView 中显示数组,我使用“cellArray”。这是我缺少从 RootView 数据到 DetailView 数据的连接的地方。到目前为止,我感谢您的帮助@jamihash
  • 它会在你在 didSelect 方法中创建DetailedViewController 之后立即执行。 passItems 应该包含DetailedViewController 显示其表格单元格所需的所有项目。
  • 这很简单,但这就是连接丢失的地方......我如何引用数组数据以便它显示在下一个视图中?你有任何示例代码吗?我在苹果的文档中找不到任何这样的例子。 DetailViewController *selectedCell = [[DetailViewController alloc] initWithStyle:UITableViewStyleGrouped]; selectedCell.passedItems = cellArray; //我需要在这里引用每一条数据吗? “标题”“详细信息”“照片”“等等”?这是我不明白的主要部分。 [self.navigationController pushViewController:selectedEvent Animation:YES];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多