2014-01-08 57 views
0

我在IB中添加了一个UITableViewUIViewController的内部,我已经将TableView内容设置为“静态单元格”,因为这正是我想要的,并且当我没有添加任何内容UITableView。但是,例如,如果我将第一个UITableViewCell的背景颜色更改为黑色,则在运行应用程序时它不会显示为黑色。我添加了UITableViewControllerDelegateUITableViewDataSource并设置了tableView.delage = self;。但是当我运行应用程序时,我仍然没有对tableView显示进行更改。UITableView在UIViewController中不显示内容

问题是什么?

注意:我也尝试添加tableView.dataSource = self;,但这只是使应用程序崩溃。

+0

你的问题解决了吗?请检查我的答案 –

回答

0

是的,你可以在UIViewController中有静态表格视图内容。

所有你需要做的是:

- 创建表的静态细胞在Interface Builder和设计他们自己喜欢的方式。

- 制作所述的UIViewController实现表视图的数据源和委托:

@interface MyViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>

- 连接表视图的界面生成器代表且dataSource到视图控制器

- 实施-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section返回你的细胞数量。 (例如return 10,这样做很简单)

- 将接口生成器中的IBOutlets连接到代码中。 重要提示:确保它们是strong,弱不起作用。例如@property (strong, nonatomic) IBOutlet UITableViewCell *myFirstCell;

-Implement -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath在索引路径返回正确的单元格。例如:

int num = indexPath.row; 
UITableViewCell *cell; 
switch (num) { 
    case 0: 
     cell = self.myFirstCell; 
     break; 
    case 1: 
     cell = self.mySecondCell; 
     break; 
} 
return cell; 

如果您应用所有这些步骤,您应该有工作的静态单元格适用于单元格不多的表格。完美的桌子,你有几个(可能不超过10-20就足够了)的内容。几天前我跑了同样的问题,我确认它的工作原理。更多信息请查看此处:Best approach to add Static-TableView-Cells to a UIViewcontroller?

+0

你确定我可以在UIViewController中使用静态内容吗? @Gavin说你只能在UITableViewController中使用静态内容。 – Peter

+0

我建议你复制粘贴代码和测试..上面的代码为我工作,所以必须是正确的。 –

0

您将要使用UITableViewController,不与UITableView一个UIViewController添加到它,因为你只应该使用静态细胞与UITableViewController。有可能的方法来解决它,所以你可以让静态单元格工作,但它只是使用一个UITableViewController更简单,你会有更少的问题来处理,尤其是如果你改变表的内容。

0

似乎你有UITableViewCell的后台问题的问题。所以不要使用背景来检查内容是否绘制。

您可以使用调试器为此例如或NSLog。

注意:单元格具有可修改的内容视图。我不记得,但似乎细胞没有可以用颜色调整的背景属性。

如果您尝试了下面的这一行,例如 - 它将无法工作,颜色将以白色作为默认颜色。

[cell setBackgroundColor:[UIColor blackColor]];

尝试添加一些东西到单元格,例如图片,然后你可以看到结果,因为我认为。

使用此代码:

[cell.contentView setBackgroundColor:[UIColor blackColor]];在此委托

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

它会帮助你,因为我认为。

0

你有没有实施协议? ... 另一件事是,当执行协议时我有一个问题,当没有单元格显示。 尝试此方法的给定的方法。

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

    NSString *[email protected]"Cell"; 
    CobranzaCell *cell = [[CobranzaCell alloc]init]; 
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier 
              forIndexPath:indexPath]; 
    if (cell == nil) { 
     cell = [[CobranzaCell alloc] initWithStyle:UITableViewCellStyleDefault 
            reuseIdentifier:CellIdentifier]; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    } 

    // Configure the cell... 
    return cell;   
} 
0

你不能在简单的UIViewController子类中使用静态单元。相反,你应该使用UITableViewController的实例。黑客在故事板中拖动UIViewController的实例到故事板画布。然后,将Container View从对象库拖放到您的UIViewController的视图。默认情况下,它将创建与相关的UIViewController实例相关的嵌入segue。你想要做什么 - 删除这个视图控制器,从对象库中拖放UITableViewController的实例,然后右键单击并从你的容器视图拖动到刚刚删除的UITableViewController。选择嵌入。现在你的表视图控制器获得容器视图的大小,你可以在其中使用静态单元!希望它会有所帮助!

相关问题