我是iOS和Objective-C以及整个MVC范例的新手,我坚持以下内容:
我有一个视图作为数据输入表单,我想让用户选择多个产品.产品列在另一个带有a的视图中,UITableViewController我启用了多个选择.
我的问题是,如何将数据从一个视图传输到另一个视图?我将UITableView在数组中保留选择,但是如何将其传递回上一个数据输入表单视图,以便在提交表单时将其与其他数据一起保存到Core Data?
我已经四处浏览并看到一些人在app delegate中声明了一个数组.我读了一些关于单身人士的事情,但不明白这些是什么,我读了一些关于创建数据模型的内容.
执行此操作的正确方法是什么?我将如何进行此操作?
model-view-controller objective-c uiviewcontroller ios swift
weak引用似乎在Swift中不起作用,除非a protocol声明为@objc,我不想在纯粹的Swift应用程序中.
此代码给出了编译错误(weak不能应用于非类类型MyClassDelegate):
class MyClass {
weak var delegate: MyClassDelegate?
}
protocol MyClassDelegate {
}
Run Code Online (Sandbox Code Playgroud)
我需要为协议添加前缀@objc,然后才能工作.
问题:什么是"纯粹的"Swift方式来实现weak delegate?
Objective C的iPhone开发中的"委托"是什么?
以下是文档的引用:
如果您的自定义类型具有逻辑上允许具有"无值"的存储属性 - 可能因为在初始化期间无法设置其值,或者因为在稍后的某个时间点允许它具有"无值" - 请使用可选类型.可选类型的属性将自动初始化,值为nil,表示该属性在初始化期间故意具有"无值".
如果我用一个类来做这件事就可以了:
class MyClass {
var someProperty: String?
}
var myClass = MyClass()
myClass.someProperty // Shows nil
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用结构类型执行此操作,则会在初始化时出错:
struct MyStruct {
var someProperty: String?
}
// ERROR
var myStruct = MyStruct()
Run Code Online (Sandbox Code Playgroud)
错误:
缺少参数'someProperty'的参数
我可以通过明确地声明它来解决这个问题:
struct MyStruct {
var someProperty: String? = nil
}
// Valid
var myStruct = MyStruct()
Run Code Online (Sandbox Code Playgroud)
鉴于文档,我希望任何类型的属性作为选项被默认为nil.有没有理由我必须在结构上明确声明它?
为什么?
没有什么好理由,就像很多人一样,我只是在试验.
我有一个UITableView定制组成UITableViewCells.在每个单元格中,有一个UILabel和一个UISlider.有人知道如何在其中一个滑块的值发生变化时,将滑块的新值从自定义UITableViewCell(在单独的文件中)发送到UITableViewController,以便我可以更新填充表的数组?
到目前为止,我最接近的是失败的黑客攻击:setSelected当滑块值发生变化时触发事件.虽然这突出了更改后的自定义单元格,但事件并未didSelectRowAtIndexPath在中获取UITableViewController.
杰米,提前谢谢你
我试图在两个视图控制器之间传递值,但它失败了.当按下第一视图控制器中的按钮时 ,第二视图控制器(其为表视图控制器)以模态呈现.
当用户点击第二视图控制器中存在的任何单元格时,它被解除,并且单元格的值被设置为第一视图控制器中存在的按钮.
以下是我用过的代码:
ForgotPasswordViewController
class ForgotPasswordViewController: UIViewController {
var securityQuestion = ""
@IBOutlet weak var btnSecurityQuestion: UIButton!
//MARK: - viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
}
var secQuestionAccessor: (String) {
get{
return securityQuestion
}set(param) { print("param : \(param)") //Value is correctly printed in console
securityQuestion = param
print("securityQuestion : \(securityQuestion)") //Value is correctly printed in console
}
}
//MARK: - viewWillAppear
override func viewWillAppear(animated: Bool) {
. . .
print("secQuestionAccessor : \(secQuestionAccessor)") //Value is empty …Run Code Online (Sandbox Code Playgroud) swift ×6
ios ×4
delegates ×3
objective-c ×2
delegation ×1
iphone ×1
segue ×1
storyboard ×1
uitableview ×1
xcode ×1