【发布时间】:2015-04-25 13:24:21
【问题描述】:
您好,我正在使用以下代码初始化 viewController:
var aboutUsViewController = self.storyboard?.instantiateViewControllerWithIdentifier("AboutUsViewController") as AboutUsViewController
在此之后,我转到aboutViewController。但是我在aboutViewController 上的所有IBOutlets 都是nil!为什么呢?
我正在使用 MMDrawer 库来获得侧边栏菜单。
var aboutUsViewController = self.storyboard?.instantiateViewControllerWithIdentifier("AboutUsViewController") as AboutUsViewController
var aboutUsNavController = UINavigationController(rootViewController: aboutUsViewController)
var appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
appDelegate.centerContainer!.centerViewController = aboutUsNavController
appDelegate.centerContainer!.toggleDrawerSide(MMDrawerSide.Left, animated: true, completion: nil)
在侧边栏上,我选择了关于我们的菜单项,在创建 AboutViewController 并将其移动到左侧之后......问题是当我初始化我的控制器时,出口为零
我在使用 pageViewController 时也遇到了这样的问题:
class ViewController: UIViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {
let pageTitles = ["Title 1", "Title 2", "Title 3", "Title 4"]
var images = ["long3","long4","long1","long2"]
var count = 0
var pageViewController : UIPageViewController!
override func viewDidLoad() {
super.viewDidLoad()
reset()
// 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.
}
func reset() {
/* Getting the page View controller */
pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as UIPageViewController
self.pageViewController.dataSource = self
let pageContentViewController = self.viewControllerAtIndex(0)
self.pageViewController.setViewControllers([pageContentViewController!], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)
/* We are substracting 30 because we have a start again button whose height is 30*/
self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height - 30)
self.addChildViewController(pageViewController)
self.view.addSubview(pageViewController.view)
self.pageViewController.didMoveToParentViewController(self)
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
var index = (viewController as PageContentViewController).pageIndex!
index++
if (index >= self.images.count){
return nil
}
return self.viewControllerAtIndex(index)
}
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
var index = (viewController as PageContentViewController).pageIndex!
if index<=0 {
return nil
}
index--
return self.viewControllerAtIndex(index)
}
func viewControllerAtIndex(index : Int) -> UIViewController? {
if((self.pageTitles.count == 0) || (index >= self.pageTitles.count)) {
return nil
}
let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageContentViewController") as PageContentViewController
pageContentViewController.imageName = self.images[index]
pageContentViewController.titleText = self.pageTitles[index]
pageContentViewController.pageIndex = index
return pageContentViewController
}
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
return pageTitles.count
}
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
return 0
}
}
class PageContentViewController: UIPageViewController {
@IBOutlet var imageViewMain: UIImageView!
@IBOutlet var labelMain: UILabel!
var pageIndex: Int!
var titleText: String!
var imageName: String!
override func viewDidLoad() {
super.viewDidLoad()
self.imageViewMain.image = UIImage(named:imageName)
self.labelMain.text = self.titleText
self.labelMain.alpha = 0.1
UIView.animateWithDuration(1.0, animations:{ ()-> Void in
self.labelMain.alpha = 1.0
})
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
我遇到标签和图像出口为零的问题!!!我在使用 MMDrawer 库时遇到了同样的问题。同样的情况。我没有使用 segues !我想因为那个网点是零
【问题讨论】:
-
你已经扩展了这个来展示你如何使用
aboutUsViewController(谢谢),但是你没有告诉我们你在那个仍然是@987654329的视图控制器上使用这个插座的地方@。nil是哪个网点?这个问题出现在哪里? -
很抱歉回答迟了。问题出现在 aboutUSViewController 上。在主板上,我添加了标签并控制将它们拖到 aboutUSViewController 中。我在 viewdidload 中设置标签的值。但我有一个奇怪的错误,所有标签出口都是零
-
我找到了答案。我没有创建 UIViewController ,而是创建了 UIPageViewController