UPDATE :看起来我的自定义单元格代码正在减慢速度,当我使用框架UITableViewCell时,执行segue时没有延迟。
这是自定义的tableview单元格(它绘制了一个像聊天气泡一样的背景):
@implementation SGEMessageCell
@synthesize defaultColor;
@synthesize backgroundView;
@synthesize backgroundRect;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// controls
self.dateLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, 290, 30)];
self.dateLabel.textColor = [UIColor lightGrayColor];
self.dateLabel.font = [UIFont fontWithName:@".HelveticaNeueInterface-Regular" size:10.0f];
self.descriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 25, 300, 30)];
self.descriptionLabel.textColor = [UIColor whiteColor];
self.descriptionLabel.font = [UIFont fontWithName:@".HelveticaNeueInterface-Regular" size:14.0f];
backgroundView = [self createBackgroundView:self.defaultColor];
backgroundView.tag = @"backgroundTag";
[self addSubview:backgroundView];
[self addSubview:self.dateLabel];
[self addSubview:self.descriptionLabel];
[self setNeedsDisplay];
}
return self;
}
@end
这是其他两个事件和行动的超级类,这是一个事件:
@implementation SGEEventCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self.defaultColor = [UIColor colorWithRed:0.91 green:0.91 blue:0.91 alpha:1];
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
return self;
}
- (UIView *)createBackgroundView:(UIColor *)color
{
CGRect background = CGRectMake(10, 25, self.frame.size.width - 60, 90);
UIView *backgroundView = [[UIView alloc] initWithFrame:background];
backgroundView.backgroundColor = color;
[backgroundView.layer setCornerRadius:7.0f];
[backgroundView.layer setMasksToBounds:YES];
return backgroundView;
}
- (void)updateBackgroundViewColor:(UIColor *)color
{
UIView *bg = [self viewWithTag:@"backgroundTag"];
bg.backgroundColor = color;
}
@end
/ UPDATE
我的主视图控制器(表格视图)中有以下代码
- (void)tableView:(UITableView *)theTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"eventDetailsSegue" sender:self];
}
最初它确实有代码存储了所选单元格的索引,但我删除它以查看它是否会在执行segue时修复毛刺/延迟,但它仍然会发生。故障是你经常需要在一个单元格上触摸两次才能使segue第一次执行,从那时起间歇性触摸会导致延迟的segue过渡。
目标视图控制器正在使用FXForms,但我已经删除了它以尝试解决故障所以现在它是一个带有ui构建器链接的消除消息的空视图控制器。
@implementation SGEEventDetailsViewController
- (IBAction)dismiss:(id)sender
{
[self.presentingViewController dismissViewControllerAnimated:YES
completion:NULL];
}
@end
谢谢!
答案 0 :(得分:0)
为时已晚,但是也许我的回答会在将来对一些开发人员有所帮助,我在使用Swift 5.1和Xcode 11.1时遇到了相同的错误,该错误在我创建自定义单元并实现didSelectRowAt方法委托时出现,我可以修复问题所在:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
DispatchQueue.global(qos: .userInteractive).async {
DispatchQueue.main.async {
self.performSegue(withIdentifier: "mySegueObject", sender: nil)
}
}
}