3

は、ストーリーボード上のtableViewのためのARCとプロトタイプ細胞を使用して、私は以下のコードと交換することができるこのシンプルなコード?:dequeueReusableCellWithIdentifierはARCと連携しますか? iOS5をで

UITableViewCell *cell = [tableView 
    dequeueReusableCellWithIdentifier:@"Cell"]; 
return cell; 

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView 
    dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] 
     initWithStyle:UITableViewCellStyleDefault 
     reuseIdentifier:CellIdentifier]; 
} 

// Configure the cell... 
return cell; 

を私は、このリンクでこれを見た:

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

事前にさんありがとうございました!

+0

はい、できます。また、ARCを必要としません。 iOS 5とストーリーボードを使用している限り、新しいパターンを使用できます。 –

+0

@JasonCoco:これは答えでありコメントではありません。 –

+0

@JasonCoco私は理由を知りませんが、このことは私のためには機能しません。私は "無し"の細胞を得続けます。私は新しいマスターディテールプロジェクトを作成します。この例は素晴らしいです。 cellForRowIndexPathメソッドとテーブルサイズメソッドを追加し、サイズを2に設定すると、dequeueReusableCellWithIdentifierが "nil"を取得し続けるため、例外が発生します。 – ericyue

答えて

2

この問題は、ストーリーボードからMenuViewControllerを作成していないために発生しています。 MenuViewControllerのインスタンスがストーリーボードに接続されていないこと

MenuViewController *menuViewController = [[MenuViewController alloc] init]; 

ので、ストーリーボードでのプロトタイプ細胞を認識していません:あなたはこのようにそれを作成しています。

あなたのストーリーボードに入り、MenuViewControllerの識別子をmenuViewControllerのように設定する必要があります。そして、あなたはこのようにインスタンスを作成することができます:フォームのiOS 5.0以降のコードの最初の行がnil値を生成することはありません、と私は見たので

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier 
                  forIndexPath:indexPath]; 

cell = [cell initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier]; 

MenuViewController *menuViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"menuViewController"]; 
+0

ありがとうございます!それはMenuViewControllerを作成するための方法ですストーリーボードは直接ですか? – ericyue

+0

'MenuButtonPressed:'メソッドからブックマークボタン(タイムラインナビゲーションバー内)を外します。コントロールをドラッグして、ブックマークボタンからストーリーボードの 'MenuViewController'インスタンスにドラッグし、セグのタイプとして' Push'または 'Modal'を選択します。 –

0

私のソリューションは、このように最終的でした私が望むスタイルを指定する他の方法はありません。または、ライブラリからTable View Controllerのインスタンスを追加して、プロトタイプセルのスタイルを編集できました。

+1

いいえ、これは非効率的で、細胞クラスがどのように識別子に関連付けられているかについての誤解を示唆しています。デキューメソッドが 'nil'を返さない場合は、(a)その識別子でストーリーボードのセルプロトタイプを関連付けているか、 (b)あなたは 'registerClass:forCellReuseIdentifier:'を使いました。または(c)あなたが以前に 'initWithStyle:reusedIdentifier:'を実行し、それが正常にセルをデキューしました。今日では、一般にオプション(a)を使用して、ストーリーボードを修正して、セルのプロトタイプが適切なスタイルを持つようにします。その後、2行目のコードを削除します。 – Rob

+0

ありがとうRob。私のコードはケース(b)ですが、セルのスタイルを設定する方法が見つかりません。 –

+0

'registerClass'を使用した場合、サブクラスは' [super initWithStyle:...] 'を呼び出す' initWithStyle'を実装するべきですが、提供された 'UITableViewCellStyle'を渡すのではなく、しかし、上記のコードサンプルは、 'initWithStyle'が2回呼び出されるためにはお勧めできません。(再利用可能なセルがない場合、' dequeueReusableCellWithIdentifier'は 'initWithStyle'を呼び出します。 – Rob

関連する問題