Objective c UITableView使用什么设计模式进行填充?委托和数据源设置的好处是什么?

Objective c UITableView使用什么设计模式进行填充?委托和数据源设置的好处是什么?,objective-c,xcode4,Objective C,Xcode4,UITableView使用什么设计模式进行填充?有什么好处? 这是委托模式吗?我提出这个问题的原因是,它不仅是委托,而且是数据源。看起来更像是MVC 我刚刚在网上浏览了几篇教程,它们的代码正在运行,但我似乎没有抓住要点。最后,我在主控制器中使用了所有这些方法 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supp

UITableView使用什么设计模式进行填充?有什么好处? 这是委托模式吗?我提出这个问题的原因是,它不仅是委托,而且是数据源。看起来更像是MVC

我刚刚在网上浏览了几篇教程,它们的代码正在运行,但我似乎没有抓住要点。最后,我在主控制器中使用了所有这些方法

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 10;//any number based on datasource size.
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

    // Set up the cell...
    cell.text = [names objectAtIndex:indexPath.row];//names is an array.
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
}
它是一个基于视图的应用程序。它应该是在一个速度控制器中,否则它看起来很凌乱,做一些简单的事情的方式过于简单。我并不是说Objective C或apple是错误的,只是说我是一个初学者,没有理解此委托和数据源设置的全部要点。

因此,总结一下,请有人解释一下:

1-此委托和数据源设置有什么好处?
2-这种设计模式的名称是什么?
3-我是否应该有一个单独的控制器(在基于视图的应用程序中)

  • 用苹果的话说,
    delegate
    实现了修改UI行为的回调方法,
    dataSource
    提供数据。在更大的应用程序中,可以使用两个不同的对象分别作为代理和数据源

  • 我不熟悉官方术语,对不起

  • 取决于应用程序的大小。即使您只是对所有内容使用
    appDelegate
    ,建议添加

     #pragma mark -- table view delegate methods
     ...methods...
     #pragma mark -- table view data source methods
     ...more methods...
    
    因此,方法列表在Xcode中显示得很好


  • 研究n层设计方法

    大多数模式都是创建能够适应变化(并且不太容易出现bug)的代码

    这里的好处是,从视图控制器中抽象出的这些片段将为维护代码提供更大的灵活性,理想情况下也会减少麻烦。如果您的需求发生变化,或者您的数据发生变化,您必须修改此文件。然而,在隔离数据源的情况下,您可能最终只需要修改一个文件。更重要的是,数据往往是外部的,可能是由其他实体创建的,因此经常会发生更改。此外,存储策略可能会改变,您可以从XML转换为核心数据,而不会影响视图控制器、委托或视图

    在委托上,如果设计发生了变化,并且相同的数据在其他地方被重用,该怎么办。如果委托未绑定到此视图控制器,则只需在需要时重用委托代码

    然后添加其他复杂因素,可能您已经将
    UITableView
    子类化了。也许,您在两个不同的位置显示相同的数据,并且在这两种情况下,您都子类化了
    UITableViewCell
    。可能要求不适用于两个不同的视图,但是这里的视图控制器可以选择显示详细版本和简要版本


    值得思考。

    谢谢您的回复,我只是想看看pragma的样子,并能找到函数列表。我在哪里可以看到添加这个的结果。在源代码编辑器区域的上边缘有一个方法列表。单击它,您将看到方法列表,其中添加了
    #pragma mark
    。great甚至不知道这一点。谢谢你的帮助。