拆分视图控制器更新表视图
我正在使用分割视图控制器。 对于主人,我有导航控制器与表视图控制器作为根视图。 有关详细信息,我将导航控制器与自定义视图控制器作为根视图。 从主我selecttableView行和详细信息视图中显示行详细信息。 从详细信息视图中,我可以使用另一个视图控制器模式segue编辑此行的详细信息。 问题是:如何在详细信息编辑视图(模态)中保存更改后刷新tableView(主)。 当我点击保存button-(IBAction) unwindEditRow:(UIStoryboardSegue *)segue
(的细节)被触发。
发生特定事件时,有许多方法可以将消息发送到ViewController。
第一种方法:使用委托模式。 什么是代表? 授权是连接对象并帮助他们与其他对象通信的干净而简单的方式。 换句话说,委托是Objective-C对象的约会服务。 :)有一些有用的链接: Objective-C中的基本概念 , 编写自己的自定义委托以下是声明新协议的方法 :
@protocol DetailViewControllerDelegate <NSObject> -(void)itemHasBeenChanged:(id)edittedObject; @end
在您的DetailViewController中声明您的未来委托:
@property (weak,nonatomic) MasterViewController <DetailViewControllerDelegate> *delegate;
在MasterViewController.m中实现itemHasBeenChanged:
方法:
-(void)itemHasBeenChanged:(id)edittedObject{ //editting logic goes here }
告诉我们的类实现DetailViewControllerDelegate
协议,以便知道哪些函数可以按行使用:
@interface MasterViewController : UITableViewController <DetailViewControllerDelegate>
完成所有这些步骤后,您可以随时通过以下方式在您的DetailViewController中调用方法:
[self.delegate itemHasBeenChanged:yourObject];
这是我在github上的示例代码
第二种方式
我们可以使用NSNotificationCenter作为自定义协议的替代scheme。 制定自定义协议和注册方法在一个大项目中很难做到,NSNotificationCenter可以免除我们的负担。 NSNotificationCenter使用的主要方法是任何对象都可以向通知中心发送通知,同时任何其他对象都可以在该中心上侦听通知。
- 在子视图中添加GMSPanoramaView或调整其大小
- 使用Swift处理Image Store到Firebase
- React-Native ListView renderRow传递道具问题。 正确的方式或错误的方式
- MKMapView调用didSelectAnnotationView
- 处理来自PubNub历史的消息作为“全局variables”
- 放大iOS中phoneGap的缩小比例
- 如何通过AFNetworking做GET请求?
- iOS的PhoneGap正则expression式replace
- UIViewAnimationOptionBeginFromCurrentState具有基本animation的意外行为