iOS开发:如何添加另一扫码按钮并提交至不同URL?
嘿,我来帮你搞定这个问题!你遇到的情况应该是两个按钮触发扫码后,共用了同一套提交逻辑,没区分开触发源对吧?咱们一步步来改:
解决步骤
1. 给两个按钮做区分标识
首先你得给两个扫码按钮明确区分方式:
- 要么在Storyboard里给按钮分别设置
tag(比如第一个设为1,第二个设为2),绑定同一个点击事件; - 要么直接给两个按钮分别创建独立的
IBAction方法,比如scanForFirstURL和scanForSecondURL。
2. 添加变量记录当前扫码的目标
在你的ViewController类里加一个枚举和变量,用来标记这次扫码是哪个按钮触发的:
// 用枚举明确两个提交目标 enum ScanTarget { case firstPHPURL case secondPHPURL } private var currentScanTarget: ScanTarget = .firstPHPURL
3. 在按钮点击事件里设置扫码目标
如果是用独立IBAction的写法:
@IBAction func scanForFirstURL(_ sender: UIButton) { currentScanTarget = .firstPHPURL startScanning() // 这里调用你原来启动扫码的逻辑(比如初始化QRCodeReaderViewController) } @IBAction func scanForSecondURL(_ sender: UIButton) { currentScanTarget = .secondPHPURL startScanning() }
如果是用tag区分的写法:
@IBAction func scanButtonTapped(_ sender: UIButton) { currentScanTarget = sender.tag == 1 ? .firstPHPURL : .secondPHPURL startScanning() }
4. 在扫码结果回调里选择对应URL提交
找到你处理扫码结果的代理方法reader(_ reader: QRCodeReaderViewController, didScanResult result: QRCodeReaderResult),在里面根据标记选择不同的URL:
func reader(_ reader: QRCodeReaderViewController, didScanResult result: QRCodeReaderResult) { reader.dismiss(animated: true) let scanContent = result.value var targetURL = "" // 根据当前扫码目标选择对应的PHP接口 switch currentScanTarget { case .firstPHPURL: targetURL = "https://your-first-php-script.com/submit" case .secondPHPURL: targetURL = "https://your-second-php-script.com/submit" } // 接下来执行你原来的提交逻辑(比如URLSession请求) guard let url = URL(string: targetURL) else { return } var request = URLRequest(url: url) request.httpMethod = "POST" let params = ["scan_result": scanContent] // ... 后续的参数编码、请求发送逻辑 }
这样改完之后,两个按钮触发的扫码就会分别提交到对应的PHP接口了——核心就是给每次扫码加个“身份标记”,让程序知道这次该用哪个地址提交。
内容的提问来源于stack exchange,提问作者epiphany
相关产品推荐
相关产品推荐

