从另一个视图向表视图添加新单元格

时间:2011-10-22 01:54:26

标签: objective-c cocoa-touch

我想知道是否有一种方法可以在一个视图上显示表格视图然后当您点击“添加”按钮时它会翻转到第二个视图,您可以在其中输入您想要的新名称细胞的文字标签说。然后你会点击一个“完成”按钮,它会让你回到第一个视图,它会有最新的项目。而且你可以添加你想要的多个单元格。

2 个答案:

答案 0 :(得分:1)

Cocoa和Cocoa touch基于MVC模式。这意味着每个都有不同的层 - 每个层都有责任 - 模型,视图和控制器。

模型是数据和对该数据的操作,视图是您看到的,控制器在它们之间进行调解。

因此,在您的示例中,您不会从其他视图添加单元格。这违反了基本模式。相反,会发生的情况是添加数据的视图会调用模型来添加项目,视图会消失。然后,当它返回到列出项目的视图时,它将查询模型(包含新对象),列表将包含该对象。

这两个视图是分离的,它们共享相同的模型。它允许您更改界面和存储,而不会破坏大部分应用程序,因为它们已经分离。

例如,您可以拥有一个表视图控制器,从查询模型类中获取它的列表。您的模型类可以是单例([MyModel sharedInstance]),它提供如下方法:

NSArray* items = [model getItems]; 

该方法可以由Sqlite(搜索fmdb),CoreData存储,简单文件或甚至像NSMutableArray等内存数据支持。您的UITableViewController通过调用模型来实现回调方法。

然后,你提供一个Add按钮,调用它来模态显示你的AddItemController。

[self presentModalViewController:addItemController];

用户在表单上提供数据并单击完成/保存按钮后,您调用模型以保存项目,该项目是包含数据的类:

[[MyModel sharedInstance] saveItem:item];

写入您的存储空间。

然后,在返回到您的UITableViewController时,在viewWillAppear中,您将查询数据并调用表视图以重新加载数据;

_items = [[MyModel sharedInstance] getItems];
[[self tableView] reloadData];

现在,该表显示了您刚刚添加的数据。

还有其他变化,但这是MVC分离的基本变体。

答案 1 :(得分:0)

我想补充一下,用简单的话来说...... 无论你使用什么来源从你的表中加载单元格(数组,字典,类,你的名字......)然后你创建“添加”按钮,让它推动新的视图控制器,然后当你按下“完成导航栏上的“按钮,将对象的属性(名称文本字段信息或任何您需要的内容)添加到您从中加载表格视图数据的源。

相关问题