我在展示模態視圖控制器時很難調試問題。在viewWillAppear被調用和viewDidAppear在呈現的(表視圖)控制器上被調用之間,我看到0.5秒和1秒之間的暫停。我試圖用一個簡單的骨骼表格視圖控制器來替換這個問題,看看問題是否發生在調用presentModalController的控制器中,並且如預期般迅速出現。模態視圖控制器出現緩慢
我用兩個控制器與NSLog語句試圖診斷問題,但無法進一步縮小比viewWillAppear和viewDidAppear之間的延遲。
缺少一行一行地重寫控制器,找出問題出在哪裏的最佳方法是什麼?我應該知道這裏有任何常見的嫌疑犯嗎?
編輯:更新有問題的代碼
表視圖顯示的是2個細胞,每個包含文本字段。
我對每個2個文本字段
@property (nonatomic, retain) IBOutlet UITextField *itemTextField;
的的UITextField屬性和分配文本字段這些屬性如下:
- (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?我有點難住。
不知道爲什麼會導致延遲,看起來很正常。儘管如此,你並不需要'self.itemTextField = textField'。你可以給textField一個標籤,並找到回到textField的方式。 – 2011-04-13 15:45:47
我重寫它使用標籤而不是屬性,但仍然是同樣的問題。我最終將其縮小爲在viewWillAppear中成爲FirstFoundResponder調用者(我希望鍵盤在視圖出現後立即可用,而不是具有動畫)。將它移動到viewDidAppear允許視圖快速出現,儘管有不需要的鍵盤動畫。 – barrym 2011-04-17 20:13:36