【问题标题】:Swift 2 How to change public var stringSwift 2 如何更改公共 var 字符串
【发布时间】:2015-10-06 14:29:18
【问题描述】:

我有菜单类,我有另一个视图我想在另一个项目中更改菜单类标题项目我的代码在这里。

菜单项文件。

public class MediumMenuItem: NSObject {
    public var title:String?
    public var completion: completionHandler?

    override private init() {
        super.init()
    }

    public convenience init(title: String, completion: completionHandler) {
        self.init()
        self.title = title
        self.completion = completion
    }
}

配置文件

var title1 = ""
var title2 = ""
var title3 = ""

视图控制器

    class NavigationController: UINavigationController {





        override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
            super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        }

        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
        }

        var menu: MediumMenu?




        override func viewDidLoad() {
            super.viewDidLoad()




    let myURL: NSURL! = NSURL(string: "http://bla.com/title_api.php")
    let request: NSMutableURLRequest = NSMutableURLRequest(URL: myURL!)
    request.HTTPMethod = "POST"

    let postString = "title=1"


    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in

        if error != nil {
            print("error=\(error)")
            return
        }else{

            if let unwrappedData = data {

                let string1 =  NSString(data: unwrappedData, encoding: NSUTF8StringEncoding)



                let fullNameArr = string1!.componentsSeparatedByString(",")


                title1 = fullNameArr[0]
                title2 = fullNameArr[1]
                title3 = fullNameArr[2]



                topURL1 = fullNameArr[3]
                topURL2 = fullNameArr[4]
                topURL3 = fullNameArr[5]






            }
        }


    }


    task.resume()




    let item2 = MediumMenuItem(title: title1) {
        let topStoriesViewController = storyboard.instantiateViewControllerWithIdentifier("Web1") as! WebViewController1
        self.setViewControllers([topStoriesViewController], animated: false)
    }



    let item3 = MediumMenuItem(title: title2) {
        let bookMarksViewController = storyboard.instantiateViewControllerWithIdentifier("Web2") as! WebViewController2
        self.setViewControllers([bookMarksViewController], animated: false)
    }



    let item4 = MediumMenuItem(title: title3) {
        let bookMarksViewController = storyboard.instantiateViewControllerWithIdentifier("Web3") as! WebViewController3
        self.setViewControllers([bookMarksViewController], animated: false)
    }

}

远程 Json 文件输出

New1,New2,New3,http://www.bla.com,http://www.bla.com,http://www.bla.com

Xcode 输出

No error and title1,title2,title3 showing blank in my app ( not showing)

我添加了所有需要您帮助的代码,非常感谢。

【问题讨论】:

    标签: ios string swift2


    【解决方案1】:

    在设置标题后,请在会话的响应块中为菜单声明 let 声明。当前声明不会获得新的标题,因为请求是异步启动的。

    这意味着请求正在运行,代码仍在前进到最后。

    无论如何,您尝试做的事情看起来很奇怪。考虑一个负责调用项目的管理器,并使用控制器来调用它。使用响应,您应该创建导航控制器并用您的项目填充它。仍然很奇怪,但导航控制器是为导航而设计的;)

    【讨论】:

    • :) 是的,我认为导航控制器类也有我从那里添加控制器代码 :) 我认为需要专家代码。还在等待:-II
    • 好吧,在响应块中创建你的项目,你应该继续。但你真正想要的是,有人为你写菜单还是什么?
    猜你喜欢
    • 2011-12-10
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2017-03-19
    • 2016-02-10
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    相关资源
    最近更新 更多