2012-01-22 48 views
0

私は2つのセクションを持つテーブルビューを持っています。同じセク​​ションの異なる行数を返す(変数に依存する)

第1節は、行 第2節は、私が実際に動くはずです、本当に簡単に何かをしようとした整数

に応じて、またはのいずれか2つの行を持っています。しかし、そうではありません:

if(section == 0) 
    return 1; 
else 
    if(numberOfRows == 2) 
      return 2; 
    else 
      return 1; 

今のところ、numberOfRowsの値にかかわらず2行を返します。 また、まったく同じコードでも中括弧で試してみると、うまくいきませんでした。それはどうしたの?

+1

ブレークポイントを追加し、numberOfRows変数の値が正しいと思うように、この行を1行ずつ進めてみましたか? – Abizern

+0

"うまくいくはずですが、" - それは漠然としています - どうしますか?また、「accolades {}」とは何ですか? – Rayfleck

+0

@ abizern私は持っている、それは私が期待した値を持っています @Rayfleck 'if(section == 0){return 1; } '(セクション== 0)が1を返した場合、'は動作します。奇妙な、そう? – Sven

答えて

1

それをこのように書いてみてください。

if(section == 0) return 1; 
else if(numberOfRows == 2) return 2; 
return 1; 

は、私はあなたがだけは2つのセクションより多くのではないを持っていることを、あなたの条件に基づいて、これを提案しています。

+0

ちょうど試してみましたが、numberOfRows == 2でなければ1を返します。 – Sven

+0

これは状態numberOfRows == 2決して起こっていない、これはあなたのコードに何か間違っている(この関数ではない)ことを意味します。私たちが助けるために、より多くのコードを提供してください。どのように 'numberOfRows'を制御していますか? 'NSLog'これらの変数を試して何が起きているのかを見てください。また、 'section'変数には正しい値がありません。 – antf

+0

それは私の方向に向かって私を導いた。何か間違ったことがあった。何らかの理由で私の整数は結局intではありませんでした。だから 'if([numberOfRows isEqualToString:@" 1 "]){'は魅力的に働いた。しかし、私の.hファイルでは、intとして宣言しました。クイック・ハウスレル質問:私はこれを正解としておかなければなりません。正解ではありませんでしたが、私をそれに導いてくれましたか? – Sven

1

これはshift-reduce-conflictです。
常に中かっこを使用することをおすすめします。

+0

まあ、私はその記事を理解する方法は、次のコードが動作するはずです: 'if(section == 0){ return 1; } else { if(numberOfRows == 2){ return 2; } else { return 1; } } 'それは.. – Sven

+0

それは動作していません。変数が変更されたときに、テーブルビューで-reloadDataを呼び出してみてください。 –

0

プロジェクトを掃除し、すべてを再構築してもう一度実行してください。

関連する問題