2011-04-10 57 views
0

我在展示模態視圖控制器時很難調試問題。在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?我有點難住。

+0

不知道爲什麼會導致延遲,看起來很正常。儘管如此,你並不需要'self.itemTextField = textField'。你可以給textField一個標籤,並找到回到textField的方式。 – 2011-04-13 15:45:47

+0

我重寫它使用標籤而不是屬性,但仍然是同樣的問題。我最終將其縮小爲在viewWillAppear中成爲FirstFoundResponder調用者(我希望鍵盤在視圖出現後立即可用,而不是具有動畫)。將它移動到viewDidAppear允許視圖快速出現,儘管有不需要的鍵盤動畫。 – barrym 2011-04-17 20:13:36

回答

1

在Instruments中使用Time Profiler查看哪些是有問題的代碼。另外請注意,過度記錄本身會導致明顯的速度下降。可能的情況是向您的表格視圖提供數據的昂貴方法,也許是自定義高度?或者同步從網絡加載內容。

+0

感謝儀器提示。沒有自定義的高度,沒有從網絡中提取數據。經過更多的擺弄之後,我想我已經指出它將文本字段分配給屬性。 – barrym 2011-04-13 08:52:09

+0

對不起,打回來讓我在那裏。我將用更多的代碼編輯主要問題。 – barrym 2011-04-13 08:55:36

1

得到了同樣的問題。只是用巴里姆的評論來修正它。只需將becaomeFirstResponder代碼移動到viewDidAppear

相關問題