2016-04-06 2 views
-3

Я действительно не знаю, как описать мой вопрос лучше, чем в названии, но я надеюсь, что вы поймете это с помощью этого кода (вторая нижняя строка показывает, что я хочу делать, но я не знаю, как это сделать в Swift):Как я могу «говорить» с var через строку

var titlesZeneggen = ["Zeneggen", "Dienstleistungen", "Erlebnis", "Gastronomie", "Unterkunft", "Kalender", "Multimedia", "Wetter/Webcams", "Orte"] 
var titlesDienstleistungen = ["Zeneggen", "Dienstleistungen", "Erlebnis", "Gastronomie", "Unterkunft", "Kalender", "Multimedia", "Wetter/Webcams", "Orte"] 
var titlesErlebnis = ["Zeneggen", "Dienstleistungen", "Erlebnis", "Gastronomie", "Unterkunft", "Kalender", "Multimedia", "Wetter/Webcams", "Orte"] 
var titlesGastronomie = ["Hotel Alpenblick", "Bistro", "in der Nähe"] 

var seguedTitle = "" 

override func viewDidLoad() { 
    self.navigationItem.title = seguedTitle 
} 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 1 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = self.tableView.dequeueReusableCellWithIdentifier("secondMenuCellUI")! as UITableViewCell 

    cell.selectionStyle = UITableViewCellSelectionStyle.None 
    cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator 

    cell.textLabel?.text = var(named: "titles" + self.seguedTitle)[indexPath.row] 

    return cell 

} 

Я хочу, чтобы мои заголовки изменить в любой seguedTitle есть. seguedTitle дается предыдущим видом. Возможные строки seguedTitle могут быть: «Zeneggen», «Dienstleistungen», «Erlebnis» и т. Д.

Надеюсь, кто-то может мне помочь.

+0

Для этого не существует языковой функции. Вам нужно будет структурировать свое приложение по-разному. – nielsbot

+0

Я могу сделать это с помощью нескольких инструкций «if», а затем «else if», но тогда код действительно длинный. Неужели нет возможности это сделать? –

+0

Как насчет использования словаря? Затем вы можете искать значения с помощью строкового ключа. – nielsbot

ответ

0

Вот такой подход, который, я думаю, будет делать то, что вы хотите.

var titles[ 
    "Zeneggen" : ["Zeneggen", "Dienstleistungen", "Erlebnis", "Gastronomie", "Unterkunft", "Kalender", "Multimedia", "Wetter/Webcams", "Orte"], 
    "Dienstleistungen" : ["Zeneggen", "Dienstleistungen", "Erlebnis", "Gastronomie", "Unterkunft", "Kalender", "Multimedia", "Wetter/Webcams", "Orte"], 
    "Erlebnis" : ["Zeneggen", "Dienstleistungen", "Erlebnis", "Gastronomie", "Unterkunft", "Kalender", "Multimedia", "Wetter/Webcams", "Orte"], 
    "Gastronomie" :["Hotel Alpenblick", "Bistro", "in der Nähe"] 
] 

var seguedTitle = "" 

override func viewDidLoad() { 
    self.navigationItem.title = seguedTitle 
} 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // Make sure that the title is really there. 
    if let tableData = titles[self.seguedTitle] as? [String] { 
     return tableData.count 
    } 
    return 0 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = self.tableView.dequeueReusableCellWithIdentifier("secondMenuCellUI")! as UITableViewCell 

    cell.selectionStyle = UITableViewCellSelectionStyle.None 
    cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator 

    if let tableData = titles[self.seguedTitle] as? [String] { 
     cell.textLabel?.text = tableData[indexPath.row] 
    } 

    return cell 
} 
+0

Спасибо. Хорошее решение! Я попробую это сегодня вечером. –

Смежные вопросы