在以编程方式创建布局时,我遵循Apple的建议:覆盖-updateConstraints,添加自定义约束,并在将子视图添加到视图后调用-setNeedsUpdateConstraints.我的典型设置如下:
- (void)setupViews
{
//Style View
//Add gesture recognizers
//Add Subviews
[self setNeedsUpdateConstraints];
}
- (void)updateConstraints
{
//Add custom constraints
[super updateConstraints];
}
Run Code Online (Sandbox Code Playgroud)
问题
有时会多次触发-updateConstraints(例如,当动画呈现或推动视图的控制器时).这里的问题是添加的每个约束都被重新添加.当尝试按需更改添加约束的常量时,这成为一个严重的问题,因为有两个原始约束随后相互冲突.我想,即使你在创建它们之后没有操纵约束,也要加倍你看起来不好的东西.
潜在解决方案
1 - 在-updateConstraints中应用它们之前删除影响视图的所有约束:
- (void)updateConstraints
{
//Remove all constraints affecting view & subviews
//Add custom constraints
[super updateConstraints];
}
Run Code Online (Sandbox Code Playgroud)
2 - 在添加自定义约束之前设置布局标志并对其进行检查:
- (void)updateConstraints
{
if (self.didAddConstraints) {
[super updateConstraints];
return;
}
//Add custom constraints
self.didAddConstraints = YES;
[super updateConstraints];
}
Run Code Online (Sandbox Code Playgroud)
3 - 不要担心加倍约束,并且每当需要更改常量时,只需在重新添加之前删除该约束.
3 - 我没想过的东西很棒.
这里的最佳做法是什么?
由于一些问题,我希望项目中的XCTest目标能够运行单独的应用程序委托.使用ObjC,这是一个相对简单的过程:操作main.m(参见:https://stackoverflow.com/a/15725328/1299041 ).
由于似乎@UIApplicationMain在AppDelegate中初始化了Swift应用程序,是否可以使用单独的AppDelegate为测试目标进行初始化?
对最近在应用和扩展程序之间共享Realm数据感到非常兴奋.该文档详细说明了如何将默认域设置为应用程序组目录,我已经开始工作了.
这就是我所坚持的 - 将旧数据库转移到应用程序组中的新位置的最佳方法是什么?
我正在使用[UITableView registerClass: forReuseIdentifier:]和[UITableView dequeueReusableCellWithIdentifier:]为了将UITableViewCells排队和出队。
例如,在viewDidLoad中:
[self.storeTableView registerClass:[StoreLineGraphCell class] forCellReuseIdentifier:@"StoreLineGraphCellIdentifier"];
在cellForRowAtIndexPath中:
StoreLineGraphCell *cell = (StoreLineGraphCell*)[self.storeTableView dequeueReusableCellWithIdentifier:@"StoreLineGraphCellIdentifier"];
为此,initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier将为UITableViewCell调用初始化程序。问题是我需要使用自定义初始化程序才能创建具有必要选项的单元格。例如,可以执行以下操作:
StoreLineGraphCell *cell = [[StoreLineGraphCell alloc] initWithReuseIdentifier:@"StoreLineGraphCell" isLocked:YES isUpcoming:YES];
registerClass&dequeue模式似乎无法实现。我想将其保留在初始化程序中,因为它只能运行一次,而不是每次单元出队时都运行一次。是否有适当的方法来实现这一目标?
在许多Redux示例中,SOME_ASYNC_ACTION_ERROR或者SOME_ASYNC_PENDING是调度以操纵全局状态的操作.我想不出这样一种场景,即最初使用全局错误/加载/挂起状态呈现组件是有意义的.当一个组件被销毁并重新安装时,该异步错误需要被"清除",这使得它看起来像操纵组件的本地状态是一个更好的选择.
考虑到这一点,在Redux中处理加载/错误/挂起状态的最佳实践是什么:
我目前正在深入研究Backbone.js,并开发了一些复杂的网络应用程序.我已经对视图(和嵌套视图)管理进行了大量研究,并确保在保留视图或销毁视图时所有事件都是未绑定的.我目前正在使用ThoughtBot的解决方案 - Backbone Support(使用复合视图和交换路由器).
即使我没有遇到有关上述问题的任何问题,有没有办法确保或测试视图是否得到了适当的清理?我希望能够确保我正确地处理事情!
谢谢!
我想知道两种不同的数据过滤方法之间的性能差异.这是我正在使用的:
我认为,这里有两种可能的方法:
我知道有些因素会影响答案(数据集的大小,分段控件的使用频率),我只是想知道两者之间是否存在整体最佳实践.
ios ×5
objective-c ×3
javascript ×2
swift ×2
uitableview ×2
autolayout ×1
backbone.js ×1
core-data ×1
iphone ×1
reactjs ×1
realm ×1
redux ×1
xctest ×1