在呈现模态视图控制器时,我很难调试问题。我看到在调用viewWillAppear和在呈现的(表视图)控制器上调用viewDidAppear之间暂停0.5秒到1秒之间。我尝试用裸骨表视图控制器替换它,看看问题是否在调用presentModalController的控制器中,并且它按预期快速出现。
我试图用NSLog语句来控制两个控制器以试图诊断问题,但是不能将其缩小到比viewWillAppear和viewDidAppear之间的延迟更短的时间。
如果没有逐行重写控制器,那么找出问题所在的最佳方法是什么?我应该注意到这里有任何常见的嫌疑人吗?
编辑:使用有问题的代码进行更新
表格视图显示2个单元格,每个单元格包含一个文本字段。
我为2个文本字段中的每一个都有UITextField属性
@property (nonatomic, retain) IBOutlet UITextField *itemTextField;
并将文本字段分配给这些属性,如下所示:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
if (indexPath.row == 0) {
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 185, 30)];
textField.delegate = self;
cell.textLabel.text = @"Item";
textField.placeholder = @"Enter item name";
textField.keyboardType = UIKeyboardTypeDefault;
textField.returnKeyType = UIReturnKeyNext;
self.itemTextField = textField;
[cell addSubview:textField];
[textField release];
}
}
return cell;
}
我遗漏了第二行,但代码是一样的。
如果我发表评论
self.itemTextField = textField;
视图按预期加载,但未注释导致我看到的轻微延迟。我应该在其他地方而不是在cellForRowAtIndexPath中初始化它吗?我有点难过。
答案 0 :(得分:1)
在Instruments中使用Time Profiler查看哪个是违规代码。另请注意,过度记录本身会导致明显的速度降低。可能的情况是为您的表格视图提供数据的昂贵方法,也许是自定义高度?或者同步从网络加载内容。
答案 1 :(得分:1)
遇到同样的问题。只是用barrym的评论来修复它。只需将becaomeFirstResponder代码移至viewDidAppear
即可