2016-07-12 4 views
6

私はそれらの上のセルの前に下のセルを維持しようとしています。私は理想的には下のセルの後ろに行くセルにサブビューを持っています。私はこれを行うためのコードをどこに置くべきかを見つけるのが難しいです。私はこのコードのスニペットを使用することが出来るのですと思う:他のセルの前にUITableViewCellを保持します

for i in 0 ..< arrayWarningTitles.count{ 
     let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: i, inSection: 0)) 
     self.tableView.bringSubviewToFront(cell!) 
} 

を、私はわからないところ、私はいくつかの異なる場所を試してみましたし、どれも(willDeselectRowAtIndexPathとdidSelectRowAtIndexPath)働いていない、と私はそれのようにも同じように最初のロードアップでも同様です。どんな提案も大歓迎です!

UPDATE(追加されたテーブルコードの表示):それは働いていないとして、それは誰にも役立ちます場合はここで

は、私のテーブルビューのコードの大部分で、私は上記のスニペットを削除しました。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    selection = indexPath.row 
    tableView.beginUpdates() 
    tableView.endUpdates() 
    // self.tableView 
} 

override func tableView(tableView: UITableView, willDeselectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? { 
    tableView.beginUpdates() 
    tableView.endUpdates() 


    return indexPath; 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) 
    cell.selectionStyle = UITableViewCellSelectionStyle.None 
    cell.backgroundColor = UIColor.clearColor() 
    // Configure the cell... 

    let warningTitle = self.view.viewWithTag(1) as? UILabel 
    let expirationTime = self.view.viewWithTag(2) as? UILabel 
    let textView = self.view.viewWithTag(5) as? UITextView 
    let grayBackground = self.view.viewWithTag(6) 
    let redBackground = self.view.viewWithTag(7) 

    warningTitle?.text = arrayWarningTitles[indexPath.row] 

    redBackground!.layer.masksToBounds = true; 
    redBackground!.layer.cornerRadius = 20; 
    grayBackground!.layer.masksToBounds = true; 
    grayBackground!.layer.cornerRadius = 20; 

    redBackground?.clipsToBounds = false; 
    cell.clipsToBounds = false; 
    cell.contentView.clipsToBounds = false; 
    cell.contentView.superview?.clipsToBounds = false; 
    self.tableView.bringSubviewToFront(cell) 
    return cell 
} 

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
{ 


    if (indexPath.row == selection) { //change 0 to whatever cell index you want taller 
     return UIScreen.mainScreen().bounds.height - 140 - 64; 
    } 
    return 58;//Choose your custom row height 
} 
+0

セルが重なっているのはなぜですか?あなたは何を持っているのか、何を達成しようとしているのかについてもっと話すことができますか? –

+0

縦のカードタイプのビューを作成したいと思います。情報は下のセルのすぐ上に表示されます。 – JordanWx

+0

私はあなたの完全な実装を見ることなく確実に言うことはできませんが、私の本能は 'tableView(_:willDisplay:forRowAt:)'に置くことです。しかし、これはハックです - 'UITableView'は本当にそのようなレイアウトをサポートしていません。より堅牢なソリューションは 'UICollectionView'を使用するでしょう –

答えて

0

あなたがはるかに良いUICollectionViewのためのカスタムレイアウトを添えられるかのように聞こえます。

私はプロジェクトsuch as this oneを見て、あなたに一番良い方法でコードを修正することをお勧めします。