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的引用,该引用可以很好地用于每个方法。谢谢大家,我在回答中添加了一个关于与表视图连接的注释。