我正在开发iOS应用程序时尝试遵循MVC模型,但遇到了一个问题:如何从tableviewcell中触发一个视图控制器,而不是它的父tableviewcontroller。presentViewController只能从视图控制器中调用。
以下是情况:
- 我在后端有一个数据对象myDataObject; - 我也有一个表格视图,在其中使用MyDataObject的实例填充一种表格视图单元格myDataCell; - 现在,我想通过我的DataCell中的UIButton click事件(而不是segue)以编程方式触发另一个ViewController。
我的目标是尽可能地解耦MVC,通过尝试避免每个对象保持指向其他两个相关对象的指针来实现,例如,我不希望cell保持对myDataObject的引用,也不希望它保持对其tableviewcontroller的引用。
以下是如何处理此情况的几种方案以及挑战:
1.声明myDataCellDelegate和myDataObjectDelegate,实现tableviewcontroller中来自两个代理声明的方法,并在委托中设置tableviewcontroller和myDataCell的引用。这样,myDataObject就具有对tableviewcontroller和myDataCell的引用。
问题在于如何从myDataCell中调用handleButtonTouched事件,并且仍然能够呈现下一个视图控制器,而不需要从myDataCell访问myDataObject?我已经从上面的委托方法中拥有了myDataCell对myDataObject的引用。
2.仅声明myDataObjectDelegate,并在tableviewcontroller中实现委托方法。我可以在委托中设置tableviewcontroller和myDataCell的引用。这样,myDataCell不必引用其父视图控制器,只有myDataObject具有对两者的引用。
使用此方法,我可以执行myDataObject->tableviewcontroller->presentviewcontroller。但是我如何使myDataCell->buttonclick事件成为触发器?我仍然需要将信息从myDataObject传递到myDataCell。
谢谢你们。
以下是情况:
- 我在后端有一个数据对象myDataObject; - 我也有一个表格视图,在其中使用MyDataObject的实例填充一种表格视图单元格myDataCell; - 现在,我想通过我的DataCell中的UIButton click事件(而不是segue)以编程方式触发另一个ViewController。
我的目标是尽可能地解耦MVC,通过尝试避免每个对象保持指向其他两个相关对象的指针来实现,例如,我不希望cell保持对myDataObject的引用,也不希望它保持对其tableviewcontroller的引用。
以下是如何处理此情况的几种方案以及挑战:
1.声明myDataCellDelegate和myDataObjectDelegate,实现tableviewcontroller中来自两个代理声明的方法,并在委托中设置tableviewcontroller和myDataCell的引用。这样,myDataObject就具有对tableviewcontroller和myDataCell的引用。
问题在于如何从myDataCell中调用handleButtonTouched事件,并且仍然能够呈现下一个视图控制器,而不需要从myDataCell访问myDataObject?我已经从上面的委托方法中拥有了myDataCell对myDataObject的引用。
2.仅声明myDataObjectDelegate,并在tableviewcontroller中实现委托方法。我可以在委托中设置tableviewcontroller和myDataCell的引用。这样,myDataCell不必引用其父视图控制器,只有myDataObject具有对两者的引用。
使用此方法,我可以执行myDataObject->tableviewcontroller->presentviewcontroller。但是我如何使myDataCell->buttonclick事件成为触发器?我仍然需要将信息从myDataObject传递到myDataCell。
谢谢你们。