Ios 如何以编程方式将ViewController转换为UITableViewController
我当前有一个Ios 如何以编程方式将ViewController转换为UITableViewController,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我当前有一个MatchCenterViewController,我想通过编程将其转换为UITableViewController。根据我找到的教程,我尝试在下面这样做,但它似乎没有出现 MatchCenterViewController.m: #import "MatchCenterViewController.h" #import <UIKit/UIKit.h> @interface MatchCenterViewController () <UITableViewData
MatchCenterViewController
,我想通过编程将其转换为UITableViewController。根据我找到的教程,我尝试在下面这样做,但它似乎没有出现
MatchCenterViewController.m:
#import "MatchCenterViewController.h"
#import <UIKit/UIKit.h>
@interface MatchCenterViewController () <UITableViewDataSource, UITableViewDelegate>
@end
@implementation MatchCenterViewController
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"newFriendCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"newFriendCell"];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
//etc.
return cell;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
@end
#导入“MatchCenterViewController.h”
#进口
@接口匹配CenterViewController()
@结束
@CenterViewController的实现
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
静态NSString*CellIdentifier=@“newFriendCell”;
UITableViewCell*单元格=[tableView dequeueReusableCellWithIdentifier:@“newFriendCell]”;
如果(单元格==nil){
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle重用标识符:CellIdentifier];
}
//等等。
返回单元;
}
-(无效)viewDidLoad
{
[超级视图下载];
}
@结束
至少需要实现以下方法
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
您需要设置委托和数据源,通常在viewDidLoad
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.dataSource = self;
self.tableView.delegate = self;
}
此外,如果表格视图是在情节提要中创建的,则需要在表格视图中添加
IBOutlet
,如果表格视图是在代码中创建的,则需要在表格视图中添加属性。为什么不扩展UITableViewController?可以添加UITableView并添加UITableViewControllerGuys的委托,你为什么不解释你为什么这样做就把这个问题写下来?使用任何对象(不仅仅是视图控制器)作为表视图的数据源或委托是完全“合法”的。这就是为什么苹果引入了相关的协议,而不是坚持将某些表数据源超类子类化。UITableViewController只是一种方便类。不多也不少。+为表视图添加属性。@0x7fffffff您实际上不需要为表视图添加属性。当然,如果没有,self.tableView将无法工作。但是,如果在IB/Storyboard editor中添加表,并且如果视图控制器作为数据源和委托连接在那里,那么所有的数据源和委托协议方法都会提交一个对tableView的引用,该引用可以很好地用于每个方法。谢谢大家,我在回答中添加了一个关于与表视图连接的注释。