我有一个名为QuickLookView的ViewController
,我需要在其中实现一个表视图。我在头文件中声明了tableview:
@interface QuickLookView : UIViewController <UITableViewDelegate, UITableViewDataSource>
...
@property (weak, nonatomic) IBOutlet UITableView *medTableView;
@end
在QuicklookView.m
我合成了medTableView并添加了标准UITableView
方法:
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSMutableArray * timeline = [gCore getDosageContainer];
return [timeline count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath* )indexPath
{
static NSString *CellIdentifier = @"medicineCell";
UITableViewCell *cell = [medTableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
NSMutableArray * timeline = [gCore getDosageContainer];
GuardianPatientDosageTimeline * d;
d = (GuardianPatientDosageTimeline *) [timeline objectAtIndex: indexPath.row];
NSString *MedTimeLine = [NSString stringWithFormat:@"%.02f %@ of %@",d->amount,d->units,d- >name];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.font = [UIFont fontWithName:@"ProximaNova-Regular" size:15];
cell.textLabel.text = MedTimeLine;//"toDoItem.itemName;
return cell;
}
这是我的委托和数据源的连接方式:
插座
datasource -------------------&gt; QuickLook View
委托---------------------&gt; QuickLook View
引用Outlets
medTableView ----------------&gt; QuickLook View
(我会张贴一张照片,但我的声誉不够大......)
但是在尝试了很多事情后我仍然遇到错误。从用正常整数替换我的return [timeline count];
到将知道什么的东西链接起来。 “timeline”和“gCore”中的所有数据都在此文件之外使用,所以我知道那里有数据。
这是错误:
***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [UIView tableView:numberOfRowsInSection:]:
答案 0 :(得分:0)
在表格视图的“属性”检查器中,它看起来像这样:
答案 1 :(得分:0)
尝试从界面构建器中删除委托和数据源出口,并以编程方式设置
-(void)viewDidLoad { //.. self.tableView.delegate = self; self.tableView.dataSource = self; }
似乎您将这些插座连接到视图而不是视图控制器。
答案 2 :(得分:0)
原来我在布局的匆忙中意外地将两个UITableView
放在彼此的顶部。这解释了为什么numberOfRowsInSection
没有被调用 - 因为它指的是隐藏在我的主要版本之下的辅助UITableView
。上面的所有其他方法都可用于将UITableView
连接到UIViewController
,我的问题特别是用户错误。