从UITableView到UITabBarController

时间:2016-05-06 23:20:34

标签: ios swift uitableview uitabbarcontroller segue

我正在创建一个允许用户每天看到随机引用的应用。在此应用程序中,在能够实际使用该应用程序之前,系统会向用户询问3个问题。最后一个问题是简单的"你最喜欢的类别/主题是什么"。使用此提示,用户将点击一个单元格并将其带到第一个" Child"视图控制器就是报价本身。

问题: 我希望用户能够点击UITableViewCell,并点击他们带来的TabBarController效果。

enter image description here

这是我到目前为止遇到的错误的照片。这是代码。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {


    if(segue.identifier == "bookSegue")
    {
        let bookQuoteTabBar = segue.destinationViewController as! UITabBarController

        let bookQuoteScreen = bookQuoteTabBar.viewControllers?[0] as? bookQuoteScreen


    }

    else if(segue.identifier == "businessSegue") {

        let businessQuoteTabBar: UITabBarController = segue.destinationViewController as! UITabBarController
        let businessQuoteScreen = businessQuoteTabBar.viewControllers?[0] as? businessQuoteScreen
    }




}

最终,会有更多主题,意味着更多的细分。但就目前而言,我从两个开始

每个TabBarController的segues是: " bookSegue" " businessSegue"

标签栏是: " bookQuoteTabBar"和" businessQuoteTabBar"

第一个"孩子"视图控制器是: " bookQuoteScreen" " businessQuoteScreen"

我应该写别的吗?我是否正确命名了每个对象的Segues,标识和类?如果您需要更多信息或参考,请评论我应该添加的内容,我会在几分钟内添加它。提前谢谢!

---------最近的编辑---------

BooksQuoteScreen:

import Foundation
import UIKit

class BooksQuoteScreen: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

BusinessQuoteScreen:

import Foundation
import UIKit
import Social

class BusinessQuoteScreen: UIViewController {

//============================//
//********** Outlets *********//
//============================//

let utility = Utility()
@IBOutlet weak var quoteDisplay: UILabel!
@IBOutlet weak var authorDisplay: UILabel!
@IBOutlet weak var quoteBackground: UIImageView!
...
}

enter image description here

1 个答案:

答案 0 :(得分:0)

屏幕截图中的错误(&#34;使用未声明的类型......&#34;)表示Xcode无法将bookQuoteScreenbusinessQuoteScreen识别为有效的类型< / em>的。在突出显示的行中,例如

let bookQuoteScreen = bookQuoteTabBar.viewControllers?[0] as? bookQuoteScreen

类型(在&#34之后指定;作为?&#34;)必须与.swift文件中定义的类名匹配。仔细检查所使用的名称是否符合&#34; BusinessQuoteScreen.swift&#34;中定义的类名(可能)。和#34; BooksQuoteScreen.swift&#34;。没有看到这些文件的内容,我无法确定,但我怀疑主角必须是大写(它应该是类名),你可能需要一个&#34; s&#34;在 &#34;图书<强>取值 QuoteScreen&#34;:

let bookQuoteScreen = bookQuoteTabBar.viewControllers?[0] as? BooksQuoteScreen

let businessQuoteScreen = businessQuoteTabBar.viewControllers?[0] as? BusinessQuoteScreen