我已经提到了这个问题以及关于视图/视图控制器转换的几个问题,但仍然找不到满意的答案.大多数解决方案建议翻转视图而不是视图控制器.但是,我的应用程序中的两个视图控制器具有完全不同的操作和实现逻辑,因此我避免将它们混合在一起.
在我的应用程序中,我有一个FrontViewController嵌入在NavigationController中的模态视图控制器.在视图上按下一个按钮后,模态视图控制器应该翻转BackViewController,反之亦然.我曾经尝试过以下方面FrontViewController:
let navi = UINavigationController(rootViewController: backController)
navi.modalPresentationStyle = .CurrentContext
navi.modalTransitionStyle = .FlipHorizontal
self.presentViewController(backController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
这几乎和我想要的一样,除了翻转导航栏之外.此外,如果我关闭模态视图,只有堆栈顶部的视图控制器被解除,而我无法让正确的父/呈现控制器解除模态视图中的所有其他堆栈控制器.
因此,我还试图阻止的ViewController栈并使用transitionFromViewController在FrontViewController使用相同的导航控制器代替:
self.navigationController!.addChildViewController(backController)
self.willMoveToParentViewController(nil)
self.navigationController!.transitionFromViewController(self, toViewController: backViewController, duration: 1, options: .TransitionFlipFromLeft, animations: {}, completion: ({Bool -> Void in
self.removeFromParentController()
c.didMoveToParentViewController(self)
}))
Run Code Online (Sandbox Code Playgroud)
然后我在执行时遇到了这个运行时错误: Parent view controller is using legacy containment in call to -[UIViewController transitionFromViewController:toViewController: duration:options:animations:completion:]
那么,如何在两个视图控制器之间进行转换同时防止它们保留在视图控制器堆栈中?
uiviewcontroller uinavigationcontroller uiviewanimationtransition ios swift
在自定义中RecyclerView.Adapter<CustomAdapter.ViewHolder>,我为微调器设置了一个适配器,发现我的微调器的值在选择后没有改变,所以我尝试OnItemClickListener在我的微调器上添加一个:
override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
// The selectable items of the spinner is dynamically generated from getItems() function
val selectableItems: List<String> = getItems()
val spinnerAdapter = ArrayAdapter<String>(this.context, androi.R.layout.simple_spinner_item)
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
spinnerAdapter.addAll(selectableItems)
viewHolder.mySpinner.adapter = spinnerAdapter
// the error occurs on the following line:
viewHolder.mySpinner.onItemClickListener = AdapterView.OnItemClickListener { adapterView, view, i, l ->
adapterView.setSelection(i)
}
viewHolder.mySpinner.setSelection(origionSelectedPosition)
}
Run Code Online (Sandbox Code Playgroud)
编译时我没有收到任何警告或错误,但是在运行时,我得到了一个RuntimeException setOnItemClickListener cannot be used with a spinner.这有点奇怪.我的代码中有什么问题吗?或者有谁知道为什么我的微调器没有随相应的选择而改变?
Kotlin解决方案的进一步说明:
我曾尝试使用onItemSelectedListener但未能找到合适的方法在kotlin中使用它.但最后!以下代码解决了我的问题:
viewHolder.mySpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { …Run Code Online (Sandbox Code Playgroud) 我有一个函数,它将字典发回服务器,并在出现错误时返回状态代码或错误内容.它有时工作正常,而其余的时间则跳过完成部分.
func postData(url: String, query: NSDictionary) ->NSObject? {
var error: NSError?
var result: NSObject? = nil
let dest = NSURL("http://myUrl.com")
let request = NSMutableURLRequest(URL: dest!)
request.HTTPMethod = "POST"
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(query, options: NSJSONWritingOptions.allZeros, error: &err)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
let task = NSURLSession.sharedSession().dataTaskWithRequest(request){
data, response, error in
if(error != nil){
println(error)
result = error
return
}
result = (response as! NSHTTPURLResponse).statusCode
return
}
task.resume()
return result
}
Run Code Online (Sandbox Code Playgroud)
我提到NSURLSession dataTaskWithRequest没有被调用,并且知道它可能是由执行时间延迟引起的.但是,由于我需要状态代码(到目前为止返回nil)来确定帖子后要执行的操作,我想知道如何解决这个问题?
我正在实现一个静态TableView,它在Swift中有两个部分.我希望与UITableViewCellSeparatorStyle.None仅在第0部分中具有相同的效果,同时在其他部分中保留分隔符.由于它是一个静态TableView,我无法在cellForRowAtIndexPath函数中配置单元格(总是得到一个单元格值nil).我试图做一些IBOutlet中每个静态细胞和它们的配置seperatorInset和layoutMargins性能,但它只是不工作.所以我想知道是否有其他方法可以删除分隔符?谢谢!