ios - SubViewController向数组增加一项数据,显示在 RootViewController里面的tableView
天蓬老师
天蓬老师 2017-04-17 13:57:58
[iOS讨论组]

有两个UIViewController:RootViewController,SubViewController.
RootViewController有一个tableView,tableView里面的数据来自数组array,怎么通过SubViewController向数组array增加一项数据,然后显示在
RootViewController里面的tableView上?类似手机里面的联系人。。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(2)
PHP中文网

其实这个涉及到的东西是oc的基础知识:代理,通知,block等。
上面的几种方式都可以实现你想要的效果。

具体实现:

(这里只说明代理模式的实现方式,其他方式雷同,但是不一样原理,题主自行Google)

场景:SubViewController一个按钮btn(绑定函数changeRoot),点击后加入到RootViewController的array一个数值,并刷新数组

代理模式

  • 声明代理

SubViewController.h


@protocol SubViewControllerDelegate <NSObject> -(void)changeArray:(NSString *) str;//声明代理方法 @end @interface SubViewController : UIViewController<UITableViewDataSource,UITableViewDelegate> { id<SubViewControllerDelegate> delegate; } @property (nonatomic, unsafe_unretained) id<SubViewControllerDelegate> delegate;

在SubViewController.m的btn绑定事件中实现代理方法


- (void)changeRoot{ [_delegate changeArray:@"change"]; }
  • 接收代理

在RootViewController里面接收代理(注意这里需要对SubViewController实例进行delegate = self操作)

-(void)changeArray:(NSString *) str
{
    [self.array addObject:str];

    [self.tableview reload];

}


大家讲道理

Array 属于复杂类型,采用引用传递。

核心思想很简单:通过 segue(或不采用 segue)将前一个 UIViewController 内存里维护的 Array 直接传递给下一个 UIViewController 的一个成员变量,本质上那个变量只是一个指针,指向同一片内存区域。

在下一页直接给数组增加一项即可,回到父 UIViewController 刷新页面就能显示结果了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号