如何使用Swift构建ScrollView?
我正在构建我的第一个IOS应用程序,我很难找到一种方法来使用XCode6上的Swift代码来做一个简单的ScrollView,有人可以帮我找到解决方案吗?
我的问题是我不知道如何在我的代码中使scrollview工作。 我已经在ViewController.swift中看到了下面的代码,我希望能够在Main.storyboard中为ViewController选择Outlet“scroller”,而不是我收到错误*"fatal error: Can't unwrap Optional.None (lldb)"* EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, subcode=0x0)
我有一些ViewController屏幕,其中一个我推出了一个ScrollView,我想让它使用Swift工作。
我坚持这个:
import UIKit class ViewController: UIViewController { @IBOutlet var scroller:UIScrollView override func viewDidLoad() { super.viewDidLoad() scroller.scrollEnabled = true; scroller.contentSize = CGSizeMake(320, 624); // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
我想如果有人能提供一个简单的例子,如何使用swift做一个scrollview,它将解决我的问题。 任何帮助都很感激。
尝试以旧样式执行此操作我尝试使用.m和.h文件执行此操作:
ViewController.m
#import "Amigo-Bridging-Header.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [scroller setScrollEnabled:YES]; [scroller setContentSize:CGSizeMake(320, 624)]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
阿米戈桥接,Header.h
#import @interface ViewController : UIViewController { IBOutlet UIScrollView *scroller; } @end
干杯
让我们试一试。 需要注意的一点是我还没有找到一种方法来将self.view作为UIScrollView进行向下转换,因此你不能像self.view.contentOffset那样进行调用。
import UIKit class ScrollingViewController : UIViewController { // Create a scrollView property that we'll set as our view in -loadView let scrollView = UIScrollView(frame: UIScreen.mainScreen().bounds) override func loadView() { // calling self.view later on will return a UIView!, but we can simply call // self.scrollView to adjust properties of the scroll view: self.view = self.scrollView // setup the scroll view self.scrollView.contentSize = CGSize(width:1234, height: 5678) // etc... } func example() { let sampleSubView = UIView() self.view.addSubview(sampleSubView) // adds to the scroll view // cannot do this: // self.view.contentOffset = CGPoint(x: 10, y: 20) // so instead we do this: self.scrollView.contentOffset = CGPoint(x: 10, y: 20) } }
您的sockets未连接。 来自Swift的Objective-C书:
当您在Swift中声明一个出口时,编译器会自动将该类型转换为弱隐式展开的可选项,并为其指定初始值nil。 实际上,编译器替换了
@IBOutlet var name: Type
使用@IBOutlet weak var name: Type! = nil
@IBOutlet weak var name: Type! = nil
如果未连接此值,则它将保持为nil,并且在访问该值时会出现运行时错误。
@IBOutlet weak var scrollView: UIScrollView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. // setup the scroll view self.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 200, 0); }