为什么我不能更改我的UITableView的自定义类?

时间:2014-04-15 09:51:19

标签: ios objective-c xcode uitableview uistoryboard

道歉,如果这个问题有点基础,但我花了几天时间试图了解这个问题的根本原因而没有任何成功。

我正在开发一个严重依赖UITableView个对象的应用。我可以成功使用UITableViewController对象并在表格中显示信息,但我需要能够在屏幕上显示多个来自多个来源的数据,UITableViewController似乎太有限了。

我希望能够在故事板上放置多个UITableView对象,然后创建管理表的自定义类文件。不幸的是,当我尝试这个时,XCODE不允许我选择这些自定义类来管理表。

虽然我在网上找到了一些可能的解决方法,但我想了解为什么选择一个新类来管理表格视图是不可能的。

[我想发布图片,但显然我不能发表声明......]

4 个答案:

答案 0 :(得分:3)

这完全取决于你做了什么。但是,你应该采取不同的方法:

如果可以,请使用包含多个部分的单个表视图(带页眉/页脚)。

如果您不能这样做,请为您想要的每个信息部分创建单独的表视图控制器和表视图。然后,你的主要'视图控制器应充当父视图,并将所有其他表视图控制器添加为子视图(addChildViewController:),并将其视图添加为子视图。这种方法将使您的代码保持隔离和组织,而不是试图让一个控制器管理许多不同的视图。

答案 1 :(得分:0)

.h
{
UITableView *objlefttableview;
UITableView *objrighttableview;
}

.m
viewdidload
{

if(!objlefttableview)
        objlefttableview=[[UITableView alloc]initWithFrame:CGRectMake(0, 87, 227, 681) style:UITableViewStylePlain];
    if(!objrighttableview)
        objrighttableview=[[UITableView alloc]initWithFrame:CGRectMake(227, 87, 263, 681) style:UITableViewStylePlain];

  [objlefttableview registerNib:[UINib nibWithNibName:@"View" bundle:Nil] forCellReuseIdentifier:@"leftCell"];

 [objrighttableview registerNib:[UINib nibWithNibName:@"ViewR" bundle:Nil] forCellReuseIdentifier:@"rightCell"];

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

if (self->objlefttableview==tableView)
    {

}

else
{

}

}

所以我刚刚创建的是我创建了两个tableview对象,然后我给它们两个不同的自定义单元格 如果你需要更多帮助,请问

答案 2 :(得分:0)

问题在于UITableViewController对象默认是UITableView委托及其数据源,即使它继承自UITableViewController,UIView也不行。我没有指定,似乎1和多个表都没有起作用,因为它们没有控制它们的类设置为委托和数据源。

通过在ViewController的.h文件中指定它也是UITableView的委托和数据源,如下所示(委托和数据源命令应该用三角括号括起来,但由于某些原因它们不会显示在这个上) :

@interface DHViewController:UIViewController [UITableViewDataSource,UITableViewDelegate]

并在.m文件的viewDidLoad方法中指定它是两个tableView的数据源和委托,如下所示:

self.tableAnswers.delegate =self;
self.tableAnswers.dataSource = self;
self.tableQuestions.delegate   =self;
self.tableQuestions.dataSource = self;

并在.m文件中实现必要的方法:

  • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

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

...两个表都可以独立管理并显示在同一个屏幕上。

非常感谢大家的帮助!

仅供参考(我想我仍然会考虑@Wain的想法,即提供一个具有特定内容/行为的单个表格 - 它似乎更整洁)。

答案 3 :(得分:0)

1)为故事板添加UITableView。

2)设置委托和数据源。

3)为tableView&#39>创建Outlets(类中的属性)

然后你可以使用thouse表视图。例如,在其上放置标签,并在程序中动态更改文本。

干杯:)