我知道标题已经足够说明了,我知道这个问题已被问过几次,但在这种情况下,我无法使其成功。
我已经使用过UITableViews并且它们都运行良好,但这一次,我甚至用其他工作副本检查了我的代码,但是它没有用。
所以,这是故事:
我在故事板中的一个视图控制器中有一个表视图,其中包含一个名为ContactViewController
的自定义类,并使用名为favContactsTable
的插座连接到代码
以下是.h和.m的相关部分:
ContactViewController.h
@interface ContactViewController : UIViewController <UITableViewDataSource>
// Other Stuff
.
.
@property (retain, nonatomic) IBOutlet UITableView *favContactsTable;
.
.
// Other Stuff
@end
这里实现了UITableViewDataSource
协议的功能:
ContactViewController.m
// Rest of the code
.
.
.
.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 5;
}
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"TEST OUTPUT");
//Test
int a = 1; // Breakpoint
a++;
cell = [self.favContactsTable dequeueReusableCellWithIdentifier:@"FavContactCell"];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"FavContactCell"];
}
cell.textLabel.text = @"FAV";
.
.
.
}
我的视图控制器中有另一个按钮,用于重新加载此表的数据,但是当我按下它时,没有触发任何断点并且没有打印日志,也没有调用任何函数。这是该按钮的代码:
- (IBAction)refreshTables:(id)sender
{
[self.favContactsTable reloadData];
}
我检查了几乎所有具有动态表格视图的项目的每个部分,我无法弄清楚出了什么问题。
请不要提及其他类似的重复问题,因为我已经阅读过它们(或者至少大部分都是这样),我确信每个部分都没有返回0行,我确定当我向其发送favContactsTable
消息时,nil
不是reloadData
等等!
任何可能有用的想法都非常感激。
答案 0 :(得分:19)
@interface myViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
}
设置委托
拖动到您的viewcontroller图标
检查代码中的单元格标识符是否相同
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SimpleTableCell"];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:@"SimpleTableCell"];
}
return cell;
}
答案 1 :(得分:3)
试试这段代码:
@interface ContactViewController : UIViewController <UITableViewDataSource, UITableViewDelegate >
.
.
.
然后在viewDidLoad
中将委托添加到tableview属性示例中:
self.favContactsTable.delegate = self;
答案 2 :(得分:0)
您未确认这些协议:UITableViewDataSource
,UITableViewDelegate
。将其添加到您的文件中。
之后:
favContactsTable.delegate=self;
favContactsTable.datasource=self;
直接从您的Xib
文件中附加。