5 model-view-controller uitableview uinavigationcontroller ios
我正在开发一个iOS应用程序,它使用一个非常常见的基于Core Data的tableview来显示项目,当它选择一个时,它会显示更详细的视图,就像Contacts应用程序一样.详细视图本身是一个以编程方式生成的分组表,其中包含具有图片和名称的标题的自定义(nib定义)视图.表中的一些单元格是具有标签名称和文本框值的自定义单元格.在"编辑"模式下,可编辑的表格单元格(以及标题中的名称)将.clearButtonMode设置为UITextFieldViewModeAlways以显示它们是可编辑的.
我目前正在使用相同的视图控制器来显示详细信息,编辑信息,并将新记录添加到原始列表.
添加新项目时,视图控制器是以模态方式创建的,具有自定义init重载,该重载在视图控制器中设置标志以指示它正在添加记录.这允许它以编辑模式启动,如果保留编辑模式,则模型视图将被删除.右侧菜单栏按钮是通常的编辑/完成,左侧是取消按钮.当正在编辑现有项目时,左按钮(正常后退按钮)将替换为取消按钮.
我开始重新考虑是否有一个视图控制器处理三种不同的模式是要走的路.有几个问题我不知道如何处理.
1)如何通过点击"完成"来判断是否保留编辑模式?它有行动吗?如果单击取消,则操作将自行解除(添加模式)或恢复先前的值离开编辑模式.我想我可以检查我的setEditing覆盖来处理它,但似乎应该有更好的方法.
2)当进入编辑模式并且我将可编辑的文本字段设置为UITextFieldViewModeAlways时,有没有办法动画"X"按钮的外观,以便它们与常规单元格上的编辑指示器一起淡入?
是否有解决这些问题的简单方法,或者我的三合一视图控制器是个坏主意?对于不同的模式重新制作相同的视图似乎并不正确,但是为视图控制器设置多种模式似乎有点麻烦.
jorj
我还没有完全理解你提出的问题,但这里有一些关于结构的想法,这些想法在第一个实例中可能更有用......
看来您对单个 UITableViewController 做了太多事情,并且不可避免地会得到大量 if 语句和令人困惑的代码。我将其分解为两个单独的 UITableViewController,一个用于处理主视图(以及您需要的任何后续编辑模式),另一个用于处理详细视图。然后,其中一个或两个都可以根据您的需要使用笔尖。
使用这样的两个控制器将允许您简单地将第二个detailViewController推送到导航堆栈上,而不是以模态方式呈现它,这在本例中似乎不是显而易见的事情。
但是,如果您希望以模态方式呈现它,您可以为详细视图编写一个协议,该协议在按下“取消”、“编辑”或“完成”按钮时发送消息。然后第一个 viewController 可以实现协议并接收这些事件。
我希望这有帮助...
归档时间: |
|
查看次数: |
1783 次 |
最近记录: |