2015-12-09 4 views
9

examples私は実際に私のために成長しているUITextViewに基づいてUITableViewCellの高さを更新できます。私が直面している問題は、UITableViewCellの中にUITextView以下のサブビューがあります。この方法では、セルの高さは更新されますが、サブビューの位置は固定されたままになり、UITextViewとサブビューのオーバーラップが発生します。 もちろん、私は自動レイアウトを使用していません。
これを修正するにはどうすればよいですか? TextViewの前UITextViewに入力されたテキストのためにUITableViewCellの高さを更新する方法

1が示されている:TextViewにした後

enter image description here

2が示されている:


これらは私の問題を理解するのに役立つ3つのスクリーンショットですenter image description here

3.テキストを入力した後:

enter image description here

+0

あなたのテーブルビューのセルでは、(固定されたままの)すべてのサブビューを1つのビューに入れ、UITextviewの高さの変更(増加/減少)でUITextviewの下のビューyの位置を設定します。 –

+0

あなたはどの言語を使用していますか? –

答えて

2

あなたは、自動レイアウトを使用していますか?私はUITableViewCellsで数回前にこれを行っていますが、主にUITextViewではなくUILabelで行っています。

自動レイアウトで問題が解決する可能性があります。すべてのサブビュー(UITableViewCellの内部)を互いに対してレイアウトします。 1つのビュー(すなわちUITextView)がサイズを変更すると、他のビューはそのビューに対して調整されます。ここにいくつかの便利なリンクがあります。

これはUITableViewCellに固有のものではありませんが、さまざまなシナリオの良い例がたくさんあります。 スタンフォード大学開発のiOS 7のアプリ:講座9 - アニメーションと自動レイアウト https://www.youtube.com/watch?v=r1sc7NI6-wo

+0

私は自動レイアウトを使用していません。私が今それを変更すれば、それは大きな変化になるでしょう。 – Nitish

+0

私はいくつかのビューが自動レイアウトに切り替えるのが難しいかもしれないと理解します。 autolayoutと一緒にスプリングとストラットを使用できることに注意してください。それはstricktlyいずれかまたは他のものである必要はありません。また、autolayoutを実行するカスタムUIView(.xib)を実装することもできますが、バネやストラットを使用してビューをどのようにレイアウトするかは分かりません。 – xdeleon

+0

私はcellForRowAtIndexのコードからUITableViewCellサブビューを作成していますが、xibは使用していません。 – Nitish

3

私はあなたがこのセルの自動レイアウトを使用している(しかし、私たちは、より具体的にあなたを助けるために、コードの例やXcodeのスクリーンショットを使用することができます)と仮定しています。

  1. あなたは他のUIViewのサブビューが最終的に拘束されている
  2. UITextViewや細胞内のその下に他のUIViewのサブビュー間の制約を持っている:あなたは、自動レイアウトを使用している場合は、ことを確認したいと思いますセルの底。
+0

私は自動レイアウトを使用していません。私が今それを変更すれば、それは大きな変化になるでしょう。 – Nitish

+0

スクリーンショットを追加しました。 – Nitish

+0

ギャップを調整する自動レイアウトを使用する必要があります。 –

3

UITableViewCell sは再利用されているので、あなたがcontentViewにオブジェクトを追加するとき、これらのオブジェクトが重なってもサブビューにつながる、除去されずに再利用されることがわかります。それは次のコードを使用してcellForRowAtIndexPathを開始するには、この回避する方法:

static NSString *CellIdentifier = @"Cell"; 

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

    for (UIView * view in [cell.contentView subviews]) { 
//  clears the cell before reusing 
     [view removeFromSuperview]; 
    } 

は、この情報がお役に立てば幸いです。

関連する問題