I am extreeemely new to Swift and native iOS developement.
I was succesfully able to create a label in Swift and it showing in my app like this:
import UIKit
import SpreadsheetView
class SampleView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
label.text = "This is Swift"
self.addSubview(label)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
However I now need to add a SpreadsheetView - from here - https://github.com/kishikawakatsumi/SpreadsheetView
Instead of adding a label my code changes to this:
import UIKit
import SpreadsheetView
class ViewController: UIViewController, SpreadsheetViewDataSource {
@IBOutlet weak var spreadsheetView: SpreadsheetView!
override func viewDidLoad() {
super.viewDidLoad()
spreadsheetView.dataSource = self
}
func numberOfColumns(in spreadsheetView: SpreadsheetView) -> Int {
return 200
}
func numberOfRows(in spreadsheetView: SpreadsheetView) -> Int {
return 400
}
func spreadsheetView(_ spreadsheetView: SpreadsheetView, widthForColumn column: Int) -> CGFloat {
return 80
}
func spreadsheetView(_ spreadsheetView: SpreadsheetView, heightForRow row: Int) -> CGFloat {
return 40
}
}
class SampleView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "ViewController");
self.addSubview(controller.view);
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
However while running I get a SIGABRT, am I going about this the right way. I see lots of articles on adding controllers like this one - Adding View controllers as subview in Swift - but may you please help me with this above case.
Here is my screenshot:
尝试这个:
let controller = ViewController()
You don't need your SampleView
class. I think you got confused because of that @IBOutlet weak var spreadsheetView: SpreadsheetView!
. You don't have to follow this procedure. You just create an instance and use it accordingly.
If you are trying to make your view
a SpreadsheetView
just use it like below way:
import UIKit
import SpreadsheetView
class ViewController: UIViewController, SpreadsheetViewDataSource {
let spreadsheetView = SpreadsheetView() //have an SpreadsheetView
override func viewDidLoad() {
super.viewDidLoad()
spreadsheetView.dataSource = self
self.view = spreadsheetView //set your controller's container view as that spreadsheetView
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func numberOfColumns(in spreadsheetView: SpreadsheetView) -> Int {
return 200
}
func numberOfRows(in spreadsheetView: SpreadsheetView) -> Int {
return 400
}
func spreadsheetView(_ spreadsheetView: SpreadsheetView, widthForColumn column: Int) -> CGFloat {
return 80
}
func spreadsheetView(_ spreadsheetView: SpreadsheetView, heightForRow row: Int) -> CGFloat {
return 40
}
}
If you still want to use @IBOutlet
approach, see the below image and follow step by step (1-2-3-4)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.