我有一个故事板,UIViewController上面有 8 个(并且还在增加)。我需要能够根据需要在任意一对之间移动。本质上,我想做的是模仿UITabBarController. 由于其中有很多,我不能只使用UITabBarController(这会立即解决我的问题),所以我使用带有UIPopoverController嵌入式的UITableView来允许用户选择他们的目的地。
当然,我可以在情节提要上创建 Segues,但是要设置我当前需要的所有 Segues,我必须为我现在拥有的视图控制器创建 56 个这样的 Segues,并且随着事情的发展,可能会创建更多 Segues 。
我的一个想法是创建一个“中心”视图控制器,除了将 Segues 保持到每个“真实”VC 并成为每个 VC 的代表之外,它实际上不做任何事情。然后,当我想要在 VC 之间切换时,我首先关闭视图控制器并将目标的 Segue 名称传递回集线器。然后,集线器可以立即执行该转场,这可以让我到达我想要的地方。我认为这会起作用,但似乎有点黑客。
有谁知道是否有更好的方法来实现这一目标?谢谢你!
我有一个 unwind segue,它在 iOS 9.3 上的横向或纵向都可以正常工作,但是如果我在呈现目标视图控制器 (A) 和执行展开 (C) 的视图控制器之间旋转设备,则会引发以下异常。
任何想法为什么会发生这种情况,以及如何解决这个问题?
我的故事板的高级视图:
例外:
2016-03-28 16:58:14.194 ClarityLife[96444:11508887] *** Assertion failure in -[_UIStoryboardUnwindChain initFromSourceViewController:toDestinationViewController:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.60.7/UIStoryboardUnwindSegueTemplate.m:119
2016-03-28 16:58:14.202 ClarityLife[96444:11508887] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not unwind from <ClarityLife.VideoCallDisconnectingViewController: 0x7fdaa07c2b50> to <ClarityLife.VideoCallIdleViewController: 0x7fdaa2c13ab0> because a common ancestor could not be found. (Note that it is not supported to unwind from a view controller to one of its descendants.)'
*** First throw call stack:
(
0 CoreFoundation 0x000000011128bd85 __exceptionPreprocess + …Run Code Online (Sandbox Code Playgroud) 在下面的代码中我有一个动作/按钮,当点击时带你到另一个viewController(SecondViewController),一切正常,但有一行我不完全理解的代码.
这行代码在做什么?
secondVC.delegate = self
我们在这里谈论的代表是什么?如果我只需要转到其他视图并且我没有传递任何数据,那真的需要吗?
@IBAction func goToView(sender: AnyObject) {
let secondVC= storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as! SecondViewController
secondVC.delegate = self // is this needed?
self.presentViewController(secondVC, animated:true, completion:nil)
}
Run Code Online (Sandbox Code Playgroud) 我有一个按钮,它已经连接到 InterfaceBuilder 中以显示一个模态界面控制器。在某些情况下,我想以编程方式触发此转换,但我找不到在 Watchkit 中执行相同转场的方法。我知道您可以在 iphone/iOS 中执行此操作,但到目前为止我无法在 Watchkit 中找到它。
我对 swift 还很陌生,所以请耐心等待。
现在我的问题可以分解为:
我有一个测试视图控制器,它可以通过显示描述和标题来显示我的“测试”对象。我也有一组 Test 对象。在右上角,有一个“跳过此测试”按钮,如果用户点击它,视图控制器将自动切换到自身,但更改正在显示的测试对象,例如它只是基本上循环遍历一个数组测试。我相应地更改了准备转场方法以通过视图控制器推送数据。
但是,如果我已经到达我的测试数组中的最后一个测试,我希望能够移动到一个完全不同的 ViewController(让我们称之为 FinalViewController)。
现在这是我无法修复的部分。
我想直接从“跳过测试”按钮创建一个转场,只是它根据特定条件转入不同的视图控制器。但是,当我尝试通过右键单击 Button 并将其拉到 FinalViewController 在 IB 中创建一个 segue 时,它删除了我之前为该按钮创建的 segue。
有谁知道是否有解决此问题的方法?谢谢你!!!!
我想知道是否有人可以解释什么时候是使用 Segue 的理想时间以及弹出和关闭视图控制器与使用展开 Segue 之间有什么区别?
如果文本框值等于 nil,我想取消展开转场。下面是当前的代码。我使用故事板连接保存按钮(将文本值保存到数据库中)。我正在考虑使用 poptorootviewcontroller 确保教科书在执行转场之前具有值。他们有什么方法可以用当前的代码来做到这一点吗?
mainView 内部的代码可以恢复到-
@IBAction func unwind(_ segue: UIStoryboardSegue){
print("Back in TableView")
}
Run Code Online (Sandbox Code Playgroud)
childView 上的按钮执行 unwind segue-
@IBAction func saveAddress(_ sender: UIButton) {
// save values to dictionary save dictionary to firebase under user, uid, addresses
// uialert controller if fields are not completed do not allow segue if fields are not complete
// perform segue to addresstableview
let addy1: String = address1Txt.text!
let addy2: String = address2Txt.text!
let aptNum: String = aptTxt.text!
let city: String = cityTxt.text! …Run Code Online (Sandbox Code Playgroud) 我有动态填充原型单元的数据。它只会根据需要创建尽可能多的数据单元格。我遇到的问题是单击 UIButton 时将数据传递到详细视图。
每个动态单元格内都有一个 UIButton,按下该按钮时将传递选定到详细视图中的单元格内的任何数据。
将数据加载到表视图中没有问题,我只是无法正确传递值。
这是我的行单元格:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "part", for: indexPath) as! partsTableCell
let part = partList[0]
cell.a.text = String(part.a)
cell.b.text = part.b
cell.c.text = part.c
cell.d.text = part.d
cell.e.text = part.e
cell.f.text = part.f
self.tableView.rowHeight = 250
cell.layer.borderColor = UIColor.darkGray.cgColor
cell.layer.borderWidth = 1
cell.layer.cornerRadius = 5
cell.clipsToBounds = true
//tried using tags, but no luck
//cell.myButton.tag = indexPath.row
return cell
}
Run Code Online (Sandbox Code Playgroud)
为了彻底起见,我为表格单元格设置了一个自定义类。
class partsTableCell: UITableViewCell …Run Code Online (Sandbox Code Playgroud) 我最近将我的 XCode 更新到了 11.0 版。自从旧项目的更新继续以来,行为一直很奇怪。当我以模态方式转到新页面时,该页面不会填满整个屏幕,而是看似悬停。
这是视图的图片:https : //imgur.com/dAxEr4q
我希望页面像升级前一样占据设备屏幕的整个长度。
在此先感谢您的帮助。
我想创建一个触摸控件,我向左滑动,视图在分页模式下滚动(比如在照片应用中你在照片之间滑动)但是当前控制器中的视图没有进入,我想要一个新的控制器来用它自己的观点.我应该使用什么控件来构建类似的东西?
segue ×10
ios ×9
swift ×5
unwind-segue ×2
apple-watch ×1
delegates ×1
objective-c ×1
tableview ×1
textbox ×1
uibutton ×1
watchkit ×1
xcode ×1