我想减少行中单元格之间的大小.现在它看起来像:
我正在尝试这个,以减少它们之间的大小:
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 2, bottom: 10, right: 2)
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
Run Code Online (Sandbox Code Playgroud)
但它对我没有帮助.我做错了什么?
首先,我正在检查self.statisticsArray.count == 0我是否创建了新记录,否则我正在更新现有值.当我创建一个新对象时,一切正常,但是当我尝试更新存在的对象时,它会在下一个错误时崩溃:
Attempting to modify object outside of a write transaction - call beginWriteTransaction on an RLMRealm instance first
Run Code Online (Sandbox Code Playgroud)
但我在一个.write区块内完成所有这一切,为什么会出现这样的错误?我读过如果我使用.write(),那么我不需要关闭交易.任何人都可以形容我崩溃的原因吗?
if self.statisticsArray.count == 0 {
self.statistics.summary = 250
try! self.realm.write({
self.realm.add(self.statistics)
self.realm.add(record)
})
} else {
if day == self.statisticsArray.last?.date {
try! self.realm.write({
self.realm.objects(Statistics).last?.summary += 250
self.realm.add(record)
})
} else {
try! self.realm.write({
self.statistics.summary = (self.statisticsArray.last?.summary)! + 250
self.realm.add(self.statistics)
self.realm.add(record)
})
}
}
Run Code Online (Sandbox Code Playgroud) 我知道这个命令:
self.tableView.scrollEnabled = true
Run Code Online (Sandbox Code Playgroud)
问题是:我想根据scrollView位置锁定滚动.为此我做:
let topEdge = scrollView.contentOffset.y
let followersViewEdge = CGRectGetHeight(self.profileView.frame) - 50
if topEdge >= followersViewEdge {
self.tableView.scrollEnabled = true
}
Run Code Online (Sandbox Code Playgroud)
它的工作原理,但问题是它不会立即锁定或解锁滚动.要锁定或解锁UITableView滚动,我需要从屏幕上松开手指并再次滚动.在这种情况下它有效.
我想立即制作它,所以当我在屏幕上滑动时它锁定并解锁滚动.我该怎么做?
UPDATE
我的代码有效.这不是一个问题.问题是我需要立即进行这些更改,而不会将手指从屏幕上松开.
所以,不要回答我如何锁定滚动!我知道怎么做.
我有一个UIViewController
class WelcomeViewController: UIViewController
Run Code Online (Sandbox Code Playgroud)
和一个UIView
class SignUpView: UIView
Run Code Online (Sandbox Code Playgroud)
现在我要设置我的WelcomeViewController代表SignUpView:
protocol SegueDelegate {
func runSegue(identifier: String)
}
class SignUpView: UIView { ... }
Run Code Online (Sandbox Code Playgroud)
并连接到
class WelcomeViewController: UIViewController, SegueDelegate {
Run Code Online (Sandbox Code Playgroud)
如何在我的WelcomeViiewController中设置那些委托?当我尝试设置时:
override func viewDidLoad() {
SignUpView.delegate = self
}
Run Code Online (Sandbox Code Playgroud)
它返回我
Instance member 'delegate' cannot be used on type 'SignUpView'
Run Code Online (Sandbox Code Playgroud)
我如何找到解决方案?
当我创建项目时,我将其命名为“Project1”。然后,后来我从 Xcode 将其更改为“Project2”。我将所有“Project1”更改为“Project2”,但是现在,当我编译项目时,它会查找其中的文件,Project2/Project1/myFile.swift然后出现下一个错误:
<unknown>:0: error: no such file or directory: '/Users/myusername/Copy/Projects/Project2/Project1/myFile.swift'
Run Code Online (Sandbox Code Playgroud)
我需要让它看起来
/Users/myusername/Copy/Projects/Project2/myFile.swift
Run Code Online (Sandbox Code Playgroud)
没有Project1在路径中。
我怎么解决这个问题?另外,我从项目的XcodeIdentity and Type部分进行了更改。Location
我有下一个结构:
* TabBarController
- ViewController with TableView
- ViewController
Run Code Online (Sandbox Code Playgroud)
当我在TableView上选择任何行时,segue会将我转发给ViewController.在带有TableView的ViewController上,我看到了BottomBar,但在segue之后它消失了.
如何将它保存在我的ViewController上?我甚至在NavigationController中推出了最后一个ViewController,但它也没有帮助我.
我该如何解决?
ios ×7
swift ×6
uitableview ×2
xcode ×2
autolayout ×1
delegates ×1
protocols ×1
realm ×1
scrollview ×1
uiview ×1