为了账号安全,请及时绑定邮箱和手机立即绑定

SubViewController向数组增加一项数据,显示在 RootViewController里面的tableView

SubViewController向数组增加一项数据,显示在 RootViewController里面的tableView

函数式编程 2019-04-16 17:05:36
有两个UIViewController:RootViewController,SubViewController.RootViewController有一个tableView,tableView里面的数据来自数组array,怎么通过SubViewController向数组array增加一项数据,然后显示在RootViewController里面的tableView上?类似手机里面的联系人。。
查看完整描述

2 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

其实这个涉及到的东西是oc的基础知识:代理,通知,block等。
上面的几种方式都可以实现你想要的效果。
具体实现:
(这里只说明代理模式的实现方式,其他方式雷同,但是不一样原理,题主自行Google)
场景:SubViewController一个按钮btn(绑定函数changeRoot),点击后加入到RootViewController的array一个数值,并刷新数组
代理模式
声明代理
SubViewController.h
@protocolSubViewControllerDelegate
-(void)changeArray:(NSString*)str;//声明代理方法
@end
@interfaceSubViewController:UIViewController
{
iddelegate;
}
@property(nonatomic,unsafe_unretained)iddelegate;
在SubViewController.m的btn绑定事件中实现代理方法
-(void)changeRoot{
[_delegatechangeArray:@"change"];
}
接收代理
在RootViewController里面接收代理(注意这里需要对SubViewController实例进行delegate=self操作)
-(void)changeArray:(NSString*)str
{
[self.arrayaddObject:str];
[self.tableviewreload];
}
                            
查看完整回答
反对 回复 2019-04-16
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

Array属于复杂类型,采用引用传递。
核心思想很简单:通过segue(或不采用segue)将前一个UIViewController内存里维护的Array直接传递给下一个UIViewController的一个成员变量,本质上那个变量只是一个指针,指向同一片内存区域。
在下一页直接给数组增加一项即可,回到父UIViewController刷新页面就能显示结果了。
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 334 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信