如何使用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); }