ios - Swift 2 如何更改公共(public) var 字符串

标签 ios string swift2

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

菜单项文件。

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 = ""

View Controller

    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)

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

最佳答案

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

这意味着请求正在运行,代码仍在继续执行到最后。

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

关于ios - Swift 2 如何更改公共(public) var 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32972564/

相关文章:

ios - 试图理解drawrect中上下文的范围

objective-c - 无法使用委托(delegate)

ios - 有效地循环包含可选值的月份和日期的jsonarray

ios - 如何在 Swift 中获取 DatePicker 时间到 Calendar 组件并插入到 Label 组件

ios - 无法将类型 'MDLMaterialProperty?!' 的值分配给类型 'Int' 的值

ios - 更改 UICollectionView 中的单元格边框颜色?

swift - 如何识别 Swift 中的强引用循环?

iphone - 请求访问联系人的权限

C++相同的字符串无法通过比较检查

python - 如何改进这个 find() 函数(或类似函数)