我是iOS开发的新手。我的主视图控制器不会从其表视图中显示任何单元格。我试图将它设置为现在只显示一个单元格。主视图控制器是UIViewController的子类,并且还具有包含原型单元的表视图。所以我的MainViewController.h文件如下所示:
#import <UIKit/UIKit.h>
@interface MainViewController : UIViewController <UITableViewDataSource>
@property (weak, nonatomic) IBOutlet UIBarButtonItem *sidebarButton;
@end
我使MainVewController成为UITableViewDataSource的委托,这是正确的想法吗?我的MainViewController.m如下所示:
#import "MainViewController.h"
#import "SWRevealViewController.h"
@interface MainViewController ()
@end
@implementation MainViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Home";
SWRevealViewController *revealViewController = self.revealViewController;
if(revealViewController) {
[self.sidebarButton setTarget: self.revealViewController];
[self.sidebarButton setAction: @selector(revealToggle:)];
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 1; //change to number of post objects in array (array.count)
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"basicCell" forIndexPath:indexPath];
return cell;
}
@end
我不明白我在这里做错了什么。我的MainViewController的表格视图是否应该正确显示单元格?想法?
答案 0 :(得分:2)
您应该在viewDidLoad中使用:
[self.tableView setDelegate:self];
[self.tableView setDataSource:self];
答案 1 :(得分:2)
我没有看到Table View插座。您是否忘记将界面构建器中的表视图连接到视图控制器头文件?完成后,您还应该将表视图的委托和数据源属性分配给&#34; self&#34;。
答案 2 :(得分:1)
您的课程符合<UITableViewDataSource>
你也应该遵循UITableViewDelegate
这样做。
@interface MainViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
您错过了delegate
和dataSource
可以通过两种方式完成:
使用代码:
[self.tableView setDelegate:self];
[self.tableView setDataSource:self];
将此代码放在viewDidLoad:
tableView
拖动到ViewController
并将其设置为delegate
和dataSource
。见下图。
编辑:
Ans:表格单元格从dataSource
方法tableView:cellForRowAtIndexPath:
返回。此单元格显示在tableView
中。所以我们不在故事板中连接它。但是我们可以在故事板中配置它。
Ans:委托:委托是一个对象,可以控制该事件的用户界面。
数据源:数据源就像委托一样,除了委托控制用户界面而不是委托控制数据。
有关详细信息,请参阅Delegates and Data Sources和this answer.