首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何快速地从父视图控制器访问容器视图中的数据?

如何快速地从父视图控制器访问容器视图中的数据?
EN

Stack Overflow用户
提问于 2017-11-21 02:59:26
回答 2查看 6K关注 0票数 1

我有一个视图控制器(SignUpController),它在顶部有一个图像视图,底部有两个按钮,还有一个视图是container view。容器视图(InfoRegisterController)包含带有多个文本字段的scrollview。容器视图不包含任何按钮。因此,现在我需要访问父视图控制器中容器视图的文本字段(或者可以这样说:我需要访问容器视图到父视图控制器中的所有数据),这样我就可以通过单击SignUpController底部的寄存器按钮来注册用户。我也无法通过代表和NSUserDefaults来解决这个问题。那么,请帮我解决这一问题在斯威夫特4?

这是父视图控制器:

代码语言:javascript
运行
AI代码解释
复制
import UIKit
import Material

class SignUpController: UIViewController {  


@IBOutlet weak var backgroundView: UIView!

@IBOutlet weak var register: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()

    backgroundView.layer.borderWidth = 1
    backgroundView.layer.borderColor = UIColor.blue.cgColor
    register.layer.cornerRadius = 5 

    // Do any additional setup after loading the view.
}
override func viewWillAppear(_ animated: Bool) {

    super.viewWillAppear(animated) // No need for semicolon

    let tv: InfoRegisterController = self.childViewControllers[0] as!InfoRegisterController

    print("Hello")
     //tv.viewWillAppear(true) 
 }

所有的数据必须被访问到这个地方,以便我可以把它张贴到服务器。

代码语言:javascript
运行
AI代码解释
复制
@IBAction func Register(_ sender: Any) {




    }
} // class end

集装箱视图:

代码语言:javascript
运行
AI代码解释
复制
import UIKit
import Material

class InfoRegisterController: UIViewController, UITextFieldDelegate,  UITableViewDelegate,UITableViewDataSource,UIImagePickerControllerDelegate,UINavigationControllerDelegate {

@IBOutlet weak var fullName: TextField!
@IBOutlet weak var Email: ErrorTextField!
@IBOutlet weak var Password: TextField!
@IBOutlet weak var verifyPassword: TextField!
@IBOutlet weak var address: TextField!
@IBOutlet weak var permanentAddress: TextField!
@IBOutlet weak var currentAddress: TextField!
@IBOutlet weak var DOB: TextField!
@IBOutlet weak var occupation: TextField!
@IBOutlet weak var selectGender: TextField!
@IBOutlet weak var identificationType: TextField!
@IBOutlet weak var identificationID: TextField!
@IBOutlet weak var issuedDate: TextField!
@IBOutlet weak var issuedDistrict: TextField!
@IBOutlet weak var licenseNumber: TextField!
@IBOutlet weak var fathersName: TextField!
@IBOutlet weak var grandfathersName: TextField!
@IBOutlet weak var mobileNumber: TextField!

override func viewDidLoad() {
    super.viewDidLoad()

    self.fullName.delegate = self
    self.Email.delegate = self
    self.Password.delegate = self
    self.verifyPassword.delegate = self
    self.address.delegate = self
    self.permanentAddress.delegate = self
    self.currentAddress.delegate = self
    self.DOB.delegate = self
    self.occupation.delegate = self
    self.identificationID.delegate = self
    self.issuedDate.delegate = self
    self.issuedDistrict.delegate = self
    self.licenseNumber.delegate = self
    self.fathersName.delegate = self
    self.grandfathersName.delegate = self
    self.mobileNumber.delegate = self

    }  
}

在这里,我需要访问所有的字段fullName,电子邮件,密码,verifyPassword,地址,permanentAddress,currentAddress,道布,职业和所有其他,以便我可以注册新用户。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-22 11:07:48

要从父视图获得对容器视图的访问,您必须将一个引用从容器视图传递给父视图,然后在父视图控制器中使用它,有许多方法可以这样做,下面就是其中之一。

在容器视图控制器viewDidAppear of InfoRegisterController中,添加以下代码,此方法将获得要使用的父对象的InfoRegisterController引用。

代码语言:javascript
运行
AI代码解释
复制
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    let signUpControllerParent = self.parent as! SignUpController
    signUpControllerParent.saveContrainerViewRefference(vc: self)

}

现在,在SignUpController中为即将保存的引用添加一个局部变量,然后使用它从textfields获取数据。

代码语言:javascript
运行
AI代码解释
复制
var infoRegisterRefferenceVC : InfoRegisterController?

在父SignUpController中也添加此方法

代码语言:javascript
运行
AI代码解释
复制
func saveContrainerViewRefference(vc:InfoRegisterController){

    self.infoRegisterRefferenceVC = vc

}

现在,您可以从父视图访问容器视图中的所有textfields和方法,例如:

代码语言:javascript
运行
AI代码解释
复制
var fullNameTextField = self.infoRegisterRefferenceVC.fullName.text 

应该是这样的:)

票数 5
EN

Stack Overflow用户

发布于 2017-11-21 03:47:42

有几种方法可以实现这一点。您可以在父视图控制器中使用“委托”和“协议”或prepareForSegue方法。

代码语言:javascript
运行
AI代码解释
复制
var somePropertyYouWantToAccess: NSString?
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

  if segue.identifier == "yourChildViewSegueIdentifier" {
       let childVc = segue.destinationViewController as ContainerViewController
        self.somePropertyYouWantToAccess = childVc.firstName
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47411431

复制
相关文章
WordPress 教程:WordPress 角色和权限终极指南
WordPress 在 2.0 版本中引入了角色和权限(Roles and Capabilities)系统,以前的用户等级的方法(User Levels)已经被弃用。但是还是有很多插件和主题仍然使用用户级别的方法来控制用户查看设置页面和其他功能。所以这篇指南将详细介绍 WordPress 的角色和权限系统,最终将让你在你的插件和主题中能够正确使用。
Denis
2023/04/15
2.2K0
用户、角色和权限
InterSystems IRIS®具有系统级安全性,以及一组与sql相关的额外安全性特性。 在数据库级保护之外,InterSystems SQL安全性提供了额外级别的安全功能。 SQL和系统级安全性之间的一些关键区别是:
用户7741497
2022/06/07
2.2K0
用户表的设计_角色和权限管理数据表设计
此时,在用户之上加一个userGroup用户组的概念。可给单个用户授权或特定用户组授权。
全栈程序员站长
2022/11/10
1.8K0
用户表的设计_角色和权限管理数据表设计
RBAC、控制权限设计、权限表设计 基于角色权限控制和基于资源权限控制的区别优劣
RBAC基于角色的访问控制(Role-Based Access Control)是按角色进行授权。例如:
宁在春
2022/10/31
2.9K0
RBAC、控制权限设计、权限表设计 基于角色权限控制和基于资源权限控制的区别优劣
PostgreSQL用户角色和权限管理
4、任何属于该组角色的对象都必须先被删除或者将对象的所有者赋予其它角色,任何赋予该组角色的权限也都必须被撤消。
数据和云
2022/02/25
4.9K0
PostgreSQL用户角色和权限管理
[NewLife.XCode]角色权限
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode。
大石头
2019/07/02
2.2K0
【系统设计】基于角色的权限管理设计实现
内部运营系统的很多 API,涉及到外网正式环境下的用户信息变更。出于安全考虑,在设计之初保留了所有的操作记录,但这用于事后回查;真正要避免线上事故的发生,还需要权限管理。
心谭博客
2020/05/06
1.7K0
rbac权限管理设计 7表_数据库角色权限表设计
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。(如下图)
全栈程序员站长
2022/11/10
5.1K0
rbac权限管理设计 7表_数据库角色权限表设计
OushuDB-数据库角色和权限-权限
权限 当你创建一个数据库对象时,你就称为它的所有者。默认情况下,只有对象的所有者和超级管理员可以 对它进行任何操作。要允许其他角色使用它,必须要经过权限授予。 OushuDB中好多种不同的权限:SELECT, INSERT, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE 和 USAGE 。适用于特定对象的权限因对象类型不同而不 同。 修改或者删除一个对象的权限是对象所有者独有的权限。要改变一个表、索引、序列或者视图的所有 者,可以使用ALTER TABLE命令,对于其他的类型也有相应的ALTER命令。 要赋予权限,可以使用GRANT命令。如果fred是一个已经存在的用户,而department是一个已经存在 的表,可以用下面的命令更新表的权限: 在权限的位置写上ALL则赋予所有与该对象类型相关的权限。 授权给名为PUBLIC的特殊”用户”可以用于将权限赋予系统中的所有用户。 另外,还可以使用”组”角色来 帮助管理一群用户的权限。 最后,我们可以使用REVOKE命令撤销权限: ALTER ROLE name CREATEROLE CREATEDB; ALTER ROLE name WITH PASSWORD 'newpassword'; ALTER ROLE name WITH PASSWORD NULL;
用户7454708
2023/05/08
3590
asp.net MVC 权限设计
几点说明:     1、该权限系统是个网站用的,用户简单,因此不涉及到部门这些信息     2、基于将角色与controller、action相关联来判断用户是否有权     3、通过重载Aut
JadePeng
2018/03/12
3.4K1
asp.net MVC 权限设计
SAP Basis DEBUG改表数据权限角色设计
项目实践中,因种种原因不得不要通过debug才能解决一些特定的问题,所以就涉及到了debug权限角色的定义了。
SAP虾客
2021/01/23
8400
wordpress角色权限汇总
我们在用wordpress开发的时候有时候需要设置不同的用户组及权限,具体有哪些角色权限呢?随ytkah一起来看看吧。WordPress使用了角色的概念,旨在让站点所有者能够控制用户在站点中可以做什么和不能做什么。通过为每个用户分配特定的角色,站点所有者可以管理用户对诸如撰写和编辑文章、创建页面、创建类别、审核评论、管理插件、管理主题和管理其他用户等任务的访问。
ytkah
2019/11/04
9620
Oracle 角色及其权限
一、简介 Oracle权限分为系统权限和对象权限。 1、系统权限 注意:系统权限不支持级联回收,所以你需要使用sysdba一个个的回收。 2、对象权限 注:对象权限支持级联回收,系统权限不支持级联回收
郑小超.
2018/01/26
7680
oushudb-数据库角色和权限-数据库角色
数据库角色从概念上与操作系统用户是完全无关的,在实际使用中把它们对应起来可能比较方便。数据 库角色在整个数据库集群中是全局的,我么可以通过执行SQL 命令CREATE ROLE来创建一个角色,如 :
用户7454708
2023/05/08
3370
oracle--角色权限
将不同权限赋予角色,再将角色赋予用户,起到管理权限的作用 SQL> create role myrole; 角色已创建。 SQL> grant create session to myrole; 授权成功。 SQL> grant create table to myrole; 授权成功。 SQL> create user zs identified by zs; 用户已创建。 SQL> grant myrole to zs; 授权成功。 SQL> drop role myrole; 角色已删除。 SQL>
eadela
2019/09/29
7230
oracle--角色权限
WordPress 用户角色和其对应权限介绍
WordPress 中默认内置了五种注册用户角色(Role),分别是:管理员、编辑、作者、投稿者、订阅者。这四种用户类型分别拥有不同的权限和作用,共同构成了 WordPress 小巧却强大的用户系统。为什么说小巧又说强大?继续看下去你就会知道。
Denis
2023/04/14
1.5K0
WordPress 用户角色和其对应权限介绍
ASP.MVC 基于AuthorizeAttribute权限设计案例
     ASP.MVC上实现权限控制的方法很多,比如使用AuthorizeAttribute这个特性 1.创建自定义特性用于权限验证 public class AuthorizeDiy : AuthorizeAttribute { /// <summary> /// 提供一个入口用于自定义授权检查 /// </summary> /// <param name="httpContext"></param> /// <r
用户1055830
2018/01/18
1.6K0
ASP.MVC 基于AuthorizeAttribute权限设计案例
oushudb-数据库角色和权限
目录 操作角色的语句: create role db_role1; /--创建角色/ drop role db_role1; /--删除角色/ select rolename from pg_roles; /--查看所有角色/ /du --在命令格式下查看所有角色的命令 角色的权限 一个数据库角色可以有很多权限,这些权限定义了角色和拥有角色的用户可以做的事情。 create role db_role1 LOGIN; --创建具有登录权限的角色db_role1 create role db_role2 SUPERUSER; --创建具有超级用户权限的角色 create role db_role3 CREATEDB; --创建具有创建数据库权限的角色 create role db_role4 CREATEROLE --创建具有创建角色权限的角色 alter role db_role1 nologin nocreatedb; --修改角色取消登录和创建数据库权限 用户 其实用户和角色都是角色,只是用户是具有登录权限的角色。 create user db_user1 password '123'; --创建用户 create role db_user1 password '123' LOGIN; --同上一句等价 drop user db_user1; --删除用户 alter user db_user1 password '123456'; --修改密码 alter user db_user1 createdb createrole; --对用户授权 赋予角色控制权限 我们可以使用GRANT 和REVOKE命令赋予用户角色,来控制权限。 create user db_user1; --创建用户1 create user db_user2; --创建用户2 create role db_role1 createdb createrole; --创建角色1 grant db_role1 to db_user1,db_user2; --给用户1,2赋予角色1,两个用户就拥有了创建数据库和创 建角色的权限 revoke db_role1 from db_user1; --从用户1移除角色1,用户不在拥有角色1的权限 OushuDB 使用 角色 的概念管理数据库访问权限。 根据角色自身的设置不同,一个角色可以看做是一个 或者一组数据库用户。 角色可以拥有数据库对象(比如表)以及可以把这些对象上的权限赋予其它角色, 以控制谁拥有访问哪些对象的权限。另外,我们也可以把一个角色的 成员 权限赋予其它角色,这样就允 许成员角色使用分配给另一个角色的权限。
用户7454708
2023/05/08
2750
基于角色的菜单按钮权限的设计及实现
          思路:sql语句加上对应的where条件 ,来对查询到的所有数据做进一步的筛选。
明志德道
2023/10/20
7690
基于角色的菜单按钮权限的设计及实现
组织架构设计、角色与权限设计的一些思考
通常情况下有两种方式可以控制用户权限,一种是通过用户角色(Role)来控制权限,另一种是通过更细致的权限(Operation)来直接指定某个用户可以进行哪些行为。
房东的狗丶
2023/02/17
4550

相似问题

需要Enum设计指南

22

如何设计用户、角色和权限模式?

33

设计指南- CakePHP和MVC的新特性

12

我需要xml设计指南

122

mvc中的用户角色和权限

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档