gpt4 book ai didi

ios - 快速更改模态视图 Controller 中的按钮文本

转载 作者:行者123 更新时间:2023-11-28 10:26:35 24 4
gpt4 key购买 nike

我必须要按钮。每个人都以模态方式打开相同的 View Controller 。在那里,我有一个 TableView,它需要返回所选值并将打开它的按钮设置为该值。

一切正常,除了按钮文本没有改变。

我已经尝试设置模态视图委托(delegate) - 没有选项可以这样做,从原始 View Controller 或模态视图 Controller 。

尝试调用 presentingViewController - 由于某种原因总是 nil。别无他法。

尝试使用一种设置按钮文本的方法 - 出现“Optional.none”错误,因为按钮尚未初始化。

尝试设置一个变量并让 viewDidAppear 方法更改文本 - 当 View 返回 View 时变量保持不变。

呈现模态视图的代码:

@IBAction func getFromStation(sender : AnyObject) {
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc : informationViewController = storyboard.instantiateViewControllerWithIdentifier("informationViewController") as informationViewController
vc.parent = "RoutePlannerFrom"
self.presentModalViewController(vc, animated: true)
}

尝试返回所选值的代码:

let vc : RoutePlannerViewController = storyboard.instantiateViewControllerWithIdentifier("routePlannerViewController") as RoutePlannerViewController
vc.btnFrom.setTitle(stopNames[indexPath.row] as String, forState: UIControlState.Normal)
self.dismissModalViewControllerAnimated(true)

有什么指点吗?谢谢:)

最佳答案

对于 delegation pattern 这听起来是个好问题

InformationViewController 中,您可以定义一个新的委托(delegate)协议(protocol):

protocol InformationDelegate {
func didSelectValue(value: String)
}

class InformationViewController {
var delegate: InformationDelegate? // The delegate that the parent view controller will conform to
...

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
// Get the value and call the delegate method
if let d = self.delegate {
d.didSelectValue(valueForButton) // Get the value from your datasource and return it to the parent through the delegate method.
}
}
}

在父 View Controller 中,您需要遵守此委托(delegate)协议(protocol):

class ParentViewController: UIViewController, InformationDelegate {
@IBOutlet var btnFrom: UIButton
....

func didSelectValue(value: String) {
self.btnFrom.setTitle(value)
}


@IBAction func getFromStation(sender : AnyObject) {
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc : informationViewController = storyboard.instantiateViewControllerWithIdentifier("informationViewController") as informationViewController
vc.parent = "RoutePlannerFrom"
vc.delegate = self // Set up this class as the InformationsViewControllers delegate
self.presentModalViewController(vc, animated: true)
}

}

希望这能让您大致了解。

关于ios - 快速更改模态视图 Controller 中的按钮文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24590604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com