我正在调整一个详细视图控制器的状态,就在它按下之前navigationController:
[self.detailViewController detailsForObject:someObject];
[self.navigationController pushViewController:self.detailViewController
animated:YES];
Run Code Online (Sandbox Code Playgroud)
在DetailViewController一个scrollView驻留.我根据传递的对象调整了哪些内容:
- (void)detailsForObject:(id)someObject {
// set some textView's content here
self.contentView.frame = <rect with new calculated size>;
self.scrollView.contentSize = self.contentView.frame.size;
self.scrollView.contentOffset = CGPointZero;
}
Run Code Online (Sandbox Code Playgroud)
现在,这一切都有效,但scrollView会contentOffset在navigationController的滑入式动画中调整它.在contentOffset将被设置为最后contentSize和新计算之间的差异.这意味着第二次打开detailsView时,详细信息将滚动到某个不需要的位置.即使我设置contentOffset来CGPointZero明确.
我发现,重新contentOffset在- viewWillAppear没有任何效果.我能想到的最好的方法是重置contentOffset viewDidAppear,导致内容明显上下移动:
- (void)viewDidAppear:(BOOL)animated {
self.scrollView.contentOffset = CGPointZero;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法防止UIScrollView它contentOffset在contentSize改变时调整它?
我试图找出从命令行在 Swift 4 中发出 HTTP 请求的最简单方法。我从URLSession 编程指南中复制了这段代码,并添加了几个打印语句。我无法弄清楚为什么.dataTask没有执行。
print("Testing URLSession")
let sessionWithoutADelegate = URLSession(configuration: URLSessionConfiguration.default)
if let url = URL(string: "https://www.example.com/") {
print("Encoded url \(url)")
(sessionWithoutADelegate.dataTask(with: url) { (data, response, error) in
print("Executing dataTask")
if let error = error {
print("Error: \(error)")
} else if let response = response,
let data = data,
let string = String(data: data, encoding: .utf8) {
print("Response: \(response)")
print("DATA:\n\(string)\nEND DATA\n")
}
}).resume()
}
Run Code Online (Sandbox Code Playgroud)
目标是从 REST api 检索数据,但我什GET至无法发出简单的请求才能正常工作......