【iOS】3G share仿写

3G share

  • 前言
  • 登录、注册界面
  • 首页
  • 搜索
    • 搜索
    • 更换照片
    • 折叠cell
  • 文章
  • 活动
  • 我的

前言

本周进行了3G share的仿写,这个仿写内容较多,用到了很多之前学习的东西,也学习了许多的新知识。

登录、注册界面

这两个界面主要运用属性传值和协议传值,将注册的账号密码通过协议传值传递给登陆界面,登陆界面再通过属性传值将保存账号密码的字典传递给注册界面,避免重复注册,这里我们需要注意的是,注册界面保存数据的字典如果初始化的话,就无法接收到来自登陆界面已经注册过的数据,解决办法就是在登陆界面初始化。

    VCregister* vcregister = [[VCregister alloc] init];vcregister.dictshou = [NSMutableDictionary dictionary];[vcregister.dictshou addEntriesFromDictionary:self.dict];vcregister.delegate = self;[self presentViewController:vcregister animated:YES completion:nil];

在密码账号确认后进入主页,通过协议传值,将我给主界面创建的内容告诉SCeneDelegate,在里面设定新的根视图控制器,进入主页。

        VCshouye* vcshouye = [[VCshouye alloc] init];VCsearch* vcsearch = [[VCsearch alloc] init];VCwenzhang* vcwenzhang = [[VCwenzhang alloc] init];VCactivity* vcactivity = [[VCactivity alloc] init];VCwode* vcwode = [[VCwode alloc] init];UITabBarController* tb = [[UITabBarController alloc] init];UINavigationController* navvcshouye = [[UINavigationController alloc] initWithRootViewController:vcshouye];UINavigationController* navvcsearch = [[UINavigationController alloc] initWithRootViewController:vcsearch];UINavigationController* navvcwenzhang = [[UINavigationController alloc] initWithRootViewController:vcwenzhang];UINavigationController* navvcactivity = [[UINavigationController alloc] initWithRootViewController:vcactivity];UINavigationController* navvcwode = [[UINavigationController alloc] initWithRootViewController:vcwode];UITabBarItem* tbshouye = [[UITabBarItem alloc] initWithTitle:nil image:[[UIImage imageNamed:@"button1_normal.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"button1_pressed.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];navvcshouye.tabBarItem = tbshouye;UITabBarItem* tbsearch = [[UITabBarItem alloc] initWithTitle:nil image:[[UIImage imageNamed:@"button2_normal.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"button2_pressed.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];navvcsearch.tabBarItem = tbsearch;UITabBarItem* tbwenzhang = [[UITabBarItem alloc] initWithTitle:nil image:[[UIImage imageNamed:@"button3_normal.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"button3_pressed.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];navvcwenzhang.tabBarItem = tbwenzhang;UITabBarItem* tbactivity = [[UITabBarItem alloc] initWithTitle:nil image:[[UIImage imageNamed:@"button4_normal.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"button4_pressed.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];navvcactivity.tabBarItem = tbactivity;UITabBarItem* tbwode = [[UITabBarItem alloc] initWithTitle:nil image:[[UIImage imageNamed:@"button5_normal.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"button5_pressed.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];navvcwode.tabBarItem = tbwode;NSArray* arr = [NSArray arrayWithObjects:navvcshouye, navvcsearch, navvcwenzhang, navvcactivity, navvcwode, nil];tb.viewControllers = arr;[self.delegate AddTabBar:tb];

在输入还要注意对于非法输入的判断,要限制输入的字符长度和不能允许输入特殊字符等。

效果图
在这里插入图片描述

首页

这个界面主要是一个无限轮播图和一个tableview组成,无限轮播图在之前ZARA和网易云音乐的仿写中已经讲过,这里就不多进行赘述了,主要是将tableview中点赞的值传递给点击打开的界面,这里我使用属性传值和协议传值完成。

        NSLog(@"属性");VC1* vc1 = [[VC1 alloc] init];vc1.arr = [self.arr1 mutableCopy];vc1.delegate = self;[self.navigationController pushViewController:vc1 animated:YES];- (void)GoAString:(NSMutableArray *)arr1
{self.arr = [arr1 mutableCopy];NSLog(@"%@", self.arr);NSLog(@"%@",arr1) ;[self.tableview beginUpdates];NSIndexPath* indexoath1 = [NSIndexPath indexPathForRow:0 inSection:1];NSArray* indexpaths = @[indexoath1];[self.tableview reloadRowsAtIndexPaths:indexpaths withRowAnimation:UITableViewRowAnimationNone];[self.tableview endUpdates];
}

效果图
在这里插入图片描述

搜索

这个界面要实现的内容比较多,更换上传的图片,折叠cell还有搜索。

搜索

这里我使用的是UITextField控件,通过对输入的text是否为大白进行判断,从而push进子视图中,展示子视图的内容,子视图中是一个TableView这里就不多做解释了。

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{NSString* str = @"大白";if([self.textfield.text isEqual:str]) {VCsou* vc2 = [[VCsou alloc] init];[self.navigationController pushViewController:vc2 animated:YES];}self.textfield.text = @"";[textField resignFirstResponder];return YES;
}

更换照片

这里更换上传的照片其实和网易云中使用的更换头像逻辑一样,这里需要每次显示上传图片的第一张,我选择将照片的名字存入一个可变数组,每次操作完成后数组中第一个元素就是选择的第一张照片,同时记得将选择照片的数量传递回来。

-(void)press:(UIButton*)button
{button.selected = !button.selected;if(button.selected) {self.selectedCount++;[self.arr addObject:@(button.tag-99)];} else {self.selectedCount--;[self.arr removeObject:@(button.tag-99)];}NSLog(@"%@",self.arr);
}-(void) find
{if(self.selectedCount>0){NSString* str = [NSString stringWithFormat:@"头像%@.JPG",self.arr[0]];UIImage* image = [UIImage imageNamed:str];NSLog(@"%@", str);self.elertView = [UIAlertController alertControllerWithTitle:@"提示" message:@"确定所选内容" preferredStyle:UIAlertControllerStyleAlert];UIAlertAction* action = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){[self.delegate ChangePhoto:image andCount:self.selectedCount];[self.navigationController popViewControllerAnimated:YES];}];[self.elertView addAction: action];[self presentViewController:self.elertView animated:YES completion:nil];} else {UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"您并未更改图片" preferredStyle:UIAlertControllerStyleAlert];UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){[self.navigationController popViewControllerAnimated:YES];}];[alert addAction:cofirm];[self presentViewController:alert animated:YES completion:nil];}
}

折叠cell

后面我会专门写一篇博客用于总结折叠cell,这里就不过做讲解了。

效果图
在这里插入图片描述

文章

这里使用的是一个滚动视图中放入三个UITableView,在整页显示,同时与分栏控件相匹配即可。
在这里插入图片描述

活动

这里就是一个简单的TableView,比较简单,不多做解释。
在这里插入图片描述

我的

这个界面内容较多,比较冗杂,其中关注要保证退出后不会消失选中状态,我使用将视图控制器当作属性赋给钱一个视图,这样就不会刷新视图了
在这里插入图片描述

                if(!self.shezhi)self.shezhi = [[VCshezhi alloc] init];[self.navigationController pushViewController:self.shezhi animated:YES];break;

效果图
在这里插入图片描述

这就是这个仿写全部的内容了,这个仿写中运用了很多之前学习的内容,也新学习了许多的知识,总的来说收获满满。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3269267.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

5. 开发环境搭建

1. 概述 基于ubuntu20.04搭建开发环境 2. 开发环境安装 恒玄SDK编译,依赖gcc-arm的编译工具,编译工具由恒玄提供; 2.1 配置编译工具链的环境变量 修改~/.profile文件 source ~/.profile 2.2 安装依赖包 sudo apt install ccache sudo a…

YOLO 车辆测速

原文:YOLO 车辆测速 - 知乎 (zhihu.com) 单目测速:多目标追踪 + 单目测距 + 速度公式 原理 目标检测并追踪视频中车辆的车尾(假定摄像头安装在单行道上),根据连续两帧的检测框计算得到像素距离。然后通过预先计算的 ppm (pixel per meter) ——道路不同,其值不同——得…

MyBatis操作数据库 -- 动态SQL

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|Spring &#x1faf5; 与天斗其乐无穷 文章目录 1. 动态SQL<if>标签<trim>标签<where> 标签<set> 标签<foreach> 标签<include>标签注解方式 1. 动态SQL 动态sql能够实现不同条件下的sql拼接 …

大模型深度神经网络(Deep Neural Network, DNN)

大模型深度神经网络&#xff08;Deep Neural Network, DNN&#xff09;是一种复杂的机器学习模型&#xff0c;其特点在于包含多个隐藏层&#xff0c;从而赋予模型强大的非线性表达能力和对复杂数据模式的学习能力。以下是对大模型DNN的详细介绍&#xff1a; 一、基本概念 深度…

C++初阶:string(字符串)

✨✨所属专栏&#xff1a;C✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 为什么要学习string类 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列 的库函数&#xff0c;但是这些库函数与字符串是分离开的&#…

贪心算法总结(2)

一、买卖股票的最佳时机 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int maxProfit(vector<int>& prices) {int miniINT_MAX;int ret0;for(int&price:prices){//遍历的时候&#xff0c;我们随时去更新最小的值&#xff0c;然后让每一位…

shell脚本学习以及案列练习

&#xff08;一&#xff09;用shell脚本自动化部署安装nginx 首先创建一个目录&#xff0c;用于存放该脚本 mkdir -p /root/shell 然后创建脚本文件 vim /root/shell/install_nginx.sh 再给脚本文件加上执行权限 chmod x /root/shell/install_nginx.sh 然后执行&#xff0c…

新手必备:iPhone新机官网验机流程详解

目录 一、准备工作 二、外包装检查 三、序列号查询 四、开箱验机 五、开机验机 六、功能检测 七、售后服务验证 八、总结 一、准备工作 检查包裹&#xff1a;确保快递包裹完好无损。准备录像设备&#xff1a;使用另一台设备录制整个验机过程&#xff0c;以防日后发生纠…

【JAVA开发笔记】Reids下载、安装、配置-Windows篇(超详细,含Redis可视化管理工具!!!)

目录 1. Redis 简介 2. 下载 Redis 安装包 3. 开启 Redis 服务 4. 配置环境变量 5. Redis 服务注册为系统服务 6. Redis 服务测试和简单使用 7. 下载安装 Redis 管理工具 8. 管理工具连接 Redis 服务器 1. Redis 简介 Redis&#xff08;Remote Dictionary Server&…

基于GitHub page和Hexo主题搭建个人博客(win)

1.安装git git官网下载地址&#xff1a;Git - Downloads (git-scm.com) (1)下载&#xff1a;进入官网&#xff0c;选择对应版本下载&#xff0c;得到.exe文件 (2)安装&#xff1a;打开.exe文件&#xff0c;进行如下操作 (3)安装好后&#xff0c;右击鼠标&#xff0c;点击显示…

运维团队如何借助分布式部署提升监控效率与可靠性

随着企业IT基础设施的日益复杂和分布式架构的广泛应用&#xff0c;传统的监控解决方案已经难以满足现代运维团队的需求。在这样的背景下&#xff0c;分布式部署作为一种新型的监控架构&#xff0c;以其灵活性、可扩展性和高可用性&#xff0c;成为了运维团队提升监控效率与可靠…

JDK21下载+安装+环境配置教程(Windows11系统)

下载地址&#xff1a; Java Downloads | Oracle 中国 下载完这样 双击 然后下一步就完事了&#xff08;如果想换路径就换一下&#xff09; 配置JDK的环境变量&#xff0c;鼠标右键此电脑--属性--高级系统设置 1.点击新建系统变量名为"JAVA_HOME"&#xff0c;变量值为…

推荐系统三十六式学习笔记:工程篇.常见架构25|Netflix个性化推荐架构

目录 架构的重要性经典架构1.数据流2.在线层3.离线层4.近线层 简化架构总结 你是否曾经觉得算法就是推荐系统的全部&#xff0c;即便不是全部&#xff0c;至少也是嫡长子&#xff0c;然而实际上&#xff0c;工程实现才是推荐系统的骨架。如果没有好的软件实现&#xff0c;算法不…

vue3里将table表格中的数据导出为excel

想要实现前端对表格中的数据进行导出&#xff0c;这里推荐使用xlsx这个依赖库实现。 1、安装 pnpm install xlsx 2、使用 import * as XLSX from "xlsx"; 直接在组件里导入XLSX库&#xff0c;然后给表格table通过ref创建响应式数据拿到table实例&#xff0c;将实…

大数据平台之HBase

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统&#xff0c;是Apache Hadoop生态系统的重要组成部分。它特别适合大规模结构化和半结构化数据的存储和检索&#xff0c;能够处理实时读写和批处理工作负载。以下是对HBase的详细介绍。 1. 核心概念 1.1 表&#x…

自定义prometheus监控获取nginx_upstream指标

1、前言 上篇文章介绍了nginx通过nginx_upstream_check_module模块实现后端健康检查&#xff0c;这篇介绍一下如何自定义prometheus监控获取nginx的upstream指标来实时监控nginx。 2、nginx_upstream_status状态 支持以下三种方式查看nginx_upstream的状态 /status?formatht…

【sklearn实战】sklearn 数据集之 Toy datasets

scikit-learn 内置的一些小型标准数据集&#xff0c;不需要从某个外部网站下载任何文件。 一 鸾尾花数据集&#xff08;Iris Dataset&#xff09; 1.1 简介 该数据集包含了 150 个鸢尾花的数据&#xff0c;其中每个数据点都有 4 个变量&#xff08;萼片长度、萼片宽度、花瓣长…

张量Tensor

借助 PyTorch 实现深度神经网络 - 张量和数据集 - 第 1 周 | Coursera 张量概述 张量运算的本质是向量和矩阵运算。神经网络的输入、输出、参数都将采用张量进行。Pytorch中的张量可以和Python中的numpy相互转换&#xff0c;这使得Pytorch在GPU上应用成为可能。神经网络中的参…

等级保护测评解决方案

什么是等级保护测评&#xff1f; 网络安全等级保护是指对国家重要信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护&#xff0c;对信息系统中使用的信息安全产品实行按等级管理&#xff0c;对信息系统中发生的信息安全…

多机构发布智能锁2024半年报:德施曼上半年线上全渠道销额稳居第一

近日&#xff0c;权威机构奥维云网、洛图科技先后发布智能门锁2024半年报&#xff0c;报告均指出上半年中国智能门锁线上渠道持续增长。奥维云网数据显示&#xff0c;2024上半年线上渠道销量同比增长22.7%&#xff0c;成行业增长最快的部分&#xff1b;洛图科技强调&#xff0c…