iOS关于UITabView和UIAlertController,UIAlertAction以及UINavigation,值修改的传递页面推送
- 关于UITabView和UIAlertController,UIAlertAction以及UINavigation,值修改的传递
- 集合嵌套集合的操作

- 声明
- 两个必须的的代理

- 实现部分代码
- (void)viewDidLoad
{
[super viewDidLoad];
// 创建一个TabView
self.tabv = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStyleGrouped];
self.tabv.separatorColor = [UIColor blackColor];
self.tabv.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"44W58PICRtX_1024.jpg"]];
// 获取数据源
self.arriOSclass = [NSMutableArray array];
self.arriOSclass = [NSMutableArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"iOS_class" ofType:@"plist"]];
// 指定代理和数据源
self.tabv.delegate = self;
self.tabv.dataSource = self;
// 指定重用单元格的唯一标识:UITableView的唯一标识注册UITableViewCell
// - 重用cell而不是本身
[self.tabv registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
// 添加到主视图
self.navigationItem.title = @"iOS_class";
[self.view addSubview:self.tabv];
}
// 实现协议方法
// 确定显示的数量(数据源必须实现_1)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// 选中集合
return [self.arriOSclass[section] count];
}
// 获取显示的内容(数据源必须实现_2)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// 重用机制:单元格容量固定,仅仅是更换内容(队列)
// 存储一个唯一标识
static NSString *cellIdentity = @"cell";
// 根据tableView的唯一标识和数据分配UITableViewCell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentity forIndexPath:indexPath];
// 在UITableViewCell内显示UITableView对应下标内容
// 使用简写
// cell.textLabel.text = [[self.arriOSclass objectAtIndex:indexPath.section]objectAtIndex:indexPath.row];
// 选中部分是一个集合,它的row才是字符串
cell.textLabel.text = self.arriOSclass[indexPath.section][indexPath.row];
return cell;
}
// 代理方法:为数据分组(TabView的style为group)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return self.arriOSclass.count;
}
// 为分组命名
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [NSString stringWithFormat:@"第%lu组", section+1];
}
// 为选中数据添加弹窗
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// 先选择部分(下标)再选择个体(下标)
NSString *info = self.arriOSclass[indexPath.section][indexPath.row]
;
// 创建弹窗
UIAlertController *alertC = [UIAlertController alertControllerWithTitle:info message:@"确认修改吗" preferredStyle:UIAlertControllerStyleAlert];
// 添加确认动作
UIAlertAction *alercAOK = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action)
{
// 推送到下一页修改值
PPViewController *ppVc = [PPViewController new];
[self.navigationController pushViewController:ppVc animated:YES];
// 没有切换效果?(模态视图具有)
ppVc.modalTransitionStyle = UIModalTransitionStylePartialCurl;
// 传递数据源中需要修改的索引过去
ppVc.name = info;
// 修改后返回该值:选择block进行操作
ppVc.ppblock = ^(NSString *name)
{
// 方法的回调:这个方法实际是在第二页面修改后才会调用该block
// 修改数组的地址
self.arriOSclass[indexPath.section][indexPath.row] = name;
// 修改后刷新数据返回时才能正常显示
[self.tabv reloadData];
};
}];
// 添加取消动作
UIAlertAction *alertACancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDestructive handler:nil];
// 动作添加到UIAlertController
[alertC addAction:alercAOK];
[alertC addAction:alertACancel];
// UIAlertController添加到当前控制器:即self
[self presentViewController:alertC animated:YES completion:nil];
}
- 传值详细解释

- 传值页面的声明

- 传值也面的实现

iOS关于UITabView和UIAlertController,UIAlertAction以及UINavigation,值修改的传递页面推送的更多相关文章
- IOS 在不打开电话服务的时候,可以响应服务器的推送消息,从而接收服务器的推送消息
在做即时通讯(基于xmpp框架)的时候遇到这样一个问题,就是在真机测试的时候,你按Home键返回桌面,在你返回桌面的时候,这是你的程序的挂起状态的,在你挂起的时候, 相当于你的程序是死的,程序的所有进 ...
- IOS引导页拨动4张图片最后一张停三秒进入主页,页面推送
// // ViewController.m // // // Created by 张艳锋 on 15/8/26. // Copyright (c) 2015年 张艳锋. All rights ...
- iOS 推送全解析
本文旨在对 iOS 推送(以下简称 推送)进行一个完整的剖析,如果你之前对推送一无所知,那么在你认真地阅读了全文后必将变成一个推送老手,你将会对其中的各种细节和原理有充分的理解.以下是 pikacod ...
- ThinkPHP 使用极光推送给ios推送消息
HTML <div id="wrap"><a href="<{:U('Push/pushData')}>">推送</a ...
- (iOS)推送常见问题
1.为什么启动的时候出现 Did Fail To Register For Remote Notifications With Error的错误程序运行的时候出现下面的错误信息: did Fail T ...
- 玩转 iOS 10 推送 —— UserNotifications Framework(合集)
iOS 10 came 在今年 6月14号 苹果开发者大会 WWDC 2016 之后,笔者赶紧就去 apple 的开发者网站下载了最新的 Xcode 8 beta 和 iOS 10 beta,然后在自 ...
- ios 推送app badge 数字累加操作
ios 推送app badge 数字累加操作: 一:此数字需要后台配合: 二:大致原理: 后台发推送时,第一次 传badge 为1,往后,依次累加操作即可: 当用户打开app时,app向后台发送请求, ...
- ios -- 极光推送《1》
昨天公司项目要加入远程推送功能,自己做显然会很麻烦,所以用了极光的远程推送,下面我会讲如何制作推送证书并使用极光推送进行远程推送. 先讲讲怎么下载推送证书吧(前面的很简单要是知道的可以直接往下滑,简书 ...
- (转)OpenFire源码学习之十八:IOS离线推送
转:http://blog.csdn.net/huwenfeng_2011/article/details/43458213 IOS离线推送 场景: 如果您有iOS端的APP,在会话聊天的时候,用户登 ...
随机推荐
- nginx优化缓冲缓存
反向代理的一个问题是代理大量用户时会增加服务器进程的性能冲击影响.在大多数情况下,可以很大程度上能通过利用Nginx的缓冲和缓存功能减轻. 当代理到另一台服务器,两个不同的连接速度会影响客户的体验: ...
- 12.04 ubuntu 更改IP
在一个局域网里面,如果是自动获取IP,就会导致IP冲突 进入要连接的热点进行设置 IPV4 Setting address netmask ...
- List<string[]> 如何去重
List<string[]> 如何去重,代码如下: static void Main(string[] args) { List<string[]> list = new Li ...
- CSS3的一些前缀
为了兼容多个浏览器,css3通常前面加一大堆前缀 -webkit /*为Chrome/Safari*/-moz /*为Firefox*/-ms /*为IE*/-o /*为Opera*/ -w ...
- cocos2d-lua SDK接入
1.lua 调用Java函数 1.1 在java中创建一个静态函数(比如在org.cocos2dx.lua.AppActivity.java中)名为Login public static void m ...
- POI获取Excel列数和行数的方法
//获取指定行,索引从0开始 hssfRow=hssfSheet.getRow(1); //获取指定列,索引从0开始 hssfCell=hssfRow.getCell((short)6);//获取总行 ...
- “strcmp()” Anyone?
“strcmp()” Anyone? strcmp() is a library function in C/C++ which compares two strings. It takes two ...
- HDU 1022 Train Problem I 用栈瞎搞
题目大意:有n辆火车,按一定的顺序进站(第一个字符串顺序),问是否能按规定的顺序出站(按第二个字符串的顺序出去),如果能输出每辆火车进出站的过程. 题目思路:栈的特点是先进后出,和题意类似,还有有一种 ...
- 项目管理实践教程一、工欲善其事,必先利其器【Basic Tools】
今天,我们首先安装一些必须的软件,主要有下面的4个,其中软件1和2使用在服务器机上,软件3和4安装在客户端机上.另外,我们还有用到MSBuild.RoboCopy.WebDeployment等等,在下 ...
- [转]java构造方法的访问修饰符
http://my.oschina.net/u/1464678/blog/210359 1. 类(class) 可见性修饰符: public—在所有类中可见,在其他包中可以用import导 ...