2011-09-25 76 views
0

UITableView用什么样的设计模式来填充,有什么好处? 它是委托模式吗?我所要求的理由是,它不仅仅是委托,而且也是数据源。看起来更像是与MVC一致。UITableView用于填充什么设计模式以及委托和数据源设置有哪些好处?

我刚刚经历了几个在线教程他们\我的代码工作,但它看起来像我缺少point.I结束所有这些方法在我的主控制器。

- (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 { 
} 

它是一个视图基于应用程序。它应该是在一个sperate controller.Otherly看起来很混乱,并在做一些简单的顶级方式。我一点都不认为Objective C或苹果是错误的,但我只是一个初学者,并且错过了这个代表和数据源设置的全部意义。

这样总结可以有人请解释:

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

回答

1
  1. 在苹果的说法,delegate工具回拨该修改UI行为的方法,并dataSource提供数据。在更大的应用程序中,可以使用两个不同的对象分别作为委托和数据源。

  2. 我不熟悉的官方术语,对不起......

  3. 取决于您的应用程序的大小。即使你只是使用appDelegate的一切,它的建议添加

    #pragma mark -- table view delegate methods 
    ...methods... 
    #pragma mark -- table view data source methods 
    ...more methods... 
    

    从而很好地显示内部的Xcode的方法列表。

+0

感谢您的回复我只是想看看#pragma的外观如何,可以找到函数列表。我在哪里可以看到添加这个结果。 –

+0

您有源代码编辑器区域上边缘的方法列表。点击它,你会看到方法列表,并在其中添加#pragma标记。 – Yuji

+0

伟大甚至不知道这一点。感谢帮助。 –

1

研究n层设计方法。

大多数所有的模式都是为了创建适合改变的代码(并且不易发生错误)。

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

在委托上,如果设计发生了变化,并且这些相同的数据在其他地方被重复使用,该怎么办?如果委托没有绑定到这个视图控制器,这变成了在需要的地方重用委托代码的简单问题。

然后添加其他复杂因素,也许你已经subclassed UITableView。也许,你在两个不同的地方显示相同的数据,并且在两种情况下,你都已经子类型UITableViewCell。也许这些要求不是针对两种不同的视图,但是这里的视图控制器可以选择显示详细版本和简要版本。

思考的食物。