Ios tableview连接到数据源和委托方式
我是iOS新手,这似乎是一个基本问题。我一直在研究,不知道tableview是如何连接到代码的。示例项目可以是 我的理解是,您需要在代码中扩展UITableViewDelegate、UITableViewDataSource,然后在情节提要中可以从tableview拖动到它们Ios tableview连接到数据源和委托方式,ios,objective-c,iphone,uitableview,Ios,Objective C,Iphone,Uitableview,我是iOS新手,这似乎是一个基本问题。我一直在研究,不知道tableview是如何连接到代码的。示例项目可以是 我的理解是,您需要在代码中扩展UITableViewDelegate、UITableViewDataSource,然后在情节提要中可以从tableview拖动到它们 但令人困惑的是,示例项目根本没有扩展UITableViewDelegate、UITableViewDataSource,因此,故事板中的tableview如何连接到代码?Datasource用于提供数据,delegate用
但令人困惑的是,示例项目根本没有扩展UITableViewDelegate、UITableViewDataSource,因此,故事板中的tableview如何连接到代码?Datasource用于提供数据,delegate用于提供行为。UITableView每次需要显示数据时都会询问数据源。它为您选择如何表示底层数据模型提供了很大的灵活性。您只需定义用于获取表信息的特定方法,iOS可以在需要知道某个部分中的行数或特定行的内容时调用这些方法
将来您可能会实现自己的委托机制。这是一种处理对象之间交互/数据传输的优秀设计模式。因为基本类采用了UITableViewController
@接口WTTableViewController:UITableViewController
在故事板中,您只需按ctrl键从tableview拖动到viewController,然后选择委派和数据源。您应该参考这一点。如果您使用TableViewController,
UITableViewDelegate
和UITableViewDataSource
将自动连接到表格,这将非常有帮助。如果您正在使用包含TableView的ViewControler,则必须添加UITableViewDelegate
和UITableViewDataSource
,如下所示:@interface myViewController:UIViewController
。在新版本的Xcode中,您可以将委托和数据源拖到表中,如果您想以编程方式设置委托,可以添加以下两行代码:[tableView setDelegate:self];
[tableView setDataSource:self];
或者,同样地:
tableview.delegate = self;
tableview.dataSource = self;
在Objective-C/iOS中,通常通过使类符合协议而不是子类化类来实现。WTTableViewController符合协议 UITableViewDataSource: 和 UITableViewDelegate: 在MainstryBoard.storyboard中,您可以在右侧的检查器中看到TableViewController有一个自定义类WTTableViewController WTTableViewController.m中的相关方法:
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"WeatherCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
return cell;
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
}
以下是有关协议的一些一般信息:
我建议阅读一本关于iOS的入门书或教程,了解总体设计原则,否则许多事情可能会非常混乱。在viewcontroller.h文件e中
声明委托和数据源方法
UIViewController<UITableViewDataSource,UITableViewDelegate>
刚刚更新了我的问题,请刷新您的页面。您的tableview已连接到委派和数据源。因此无需扩展UITableViewDelegate,UITableViewDataSource?你是说。。。仅仅从tableview拖到委托和数据源是否足够?那么为什么我们甚至需要扩展UITableViewDelegate,UITableViewDataSource您使用默认的tableviewController,这样从tableview拖到委托和数据源是不够的。但是在我看到的一些示例中,代码中实际扩展的UITableViewDel?egate,UITableViewDataSource,他在故事板中设置他的委托和数据源的目的是什么。所以不需要写这个。我看到了,但问题并不是这样定义的,他一般都在问,所以我解释了两种方法,以防他有时需要它。
- (void)viewDidLoad {
tableview.delegate=self;
tableview.dataSource=self;
}