2017-05-14 4 views
0

静的なテーブルビューのセルの高さを変更したいアプリケーションにifステートメントがあります。ここに私が望んでいるものがありますスタティックテーブルビューのセルの高さを変更する

import UIKit 

class DashboardViewController: UITableViewController { 

    @IBOutlet weak var cell: UITableViewCell! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 


     // Set cell to "show" on date 
     let date = Date() 
     let calendar = Calendar.current 
     let components = calendar.dateComponents([.year, .month, .day], from: date) 

     let year = components.year 
     let month = components.month 
     let day = components.day 

     if(month == 6 && day == 5 && year == 2017) { 

      // Here I want the height to be set to 313 
     } else { 

     // Here I want the height to be set to 0 
     } 




    } 


    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 



} 

私は助けが必要な行がマークされています。ありがとう!

+0

あなたはセルに高さの制約を追加しようとした変更は、あなたの状態で一定であることがありますか? –

+0

@AndrezaCristinadaSilvaセルに高さの制約を追加できないようです – iFunnyVlogger

答えて

0

テーブルビューrowHeightの属性を変更することができます。あなたの例を使用する:

さらに
if cell is MyCustomTableViewCell { 
    tableView.rowHeight = 313 
} else { 
    tableView.rowHeight = 0 
} 

、効果的にあなたがtableview.reload()とテーブルビューをリロードするか、そのインデックスパスで行を更新する必要があるセルの高さを変更するには:

let indexPath = NSIndexPath(forRow: rowNumber, inSection: 0) 
tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top) 

うまくいけば、これは行くことができますあなたが望むソリューションに向かって

0

チャットで提供した詳細を元に編集してください。

まず、TableViewControllerを正しく設定する必要があります。 Hereが記事に載っていますが、これは多くのテーブルビューの基礎をカバーしています。

あなたのテーブルビューを設定した後:

あなたのモデルは、日付条件を一致させるために、日付のプロパティのいくつかの並べ替えを持っている必要があります。

var model = [(text: "here is some text", date: Date())] 

あなたがtableViewController /デリゲートで機能タブtableView(:_ heightForRowAt indexPath:_)を実装/オーバーライドする必要があります:あなたのモデルは次のようになり、たとえば言うことができます。この関数では、モデルから来る日付をチェックし、それをセルの高さに適用します。特定の条件が発生した場合

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

    let date = model[indexPath.row].date 

    if yourCondition { 
     return 313 
    } else { 
     return = 0 
    } 
} 
+0

これを行うと、そのセルがすべて変更されませんか? – iFunnyVlogger

+0

@iFunnyVloggerこれはすべてのセルをチェックします。これを行う正しい方法ですが、私はあなたに保証します。私はちょうどあなたのために私の答えを変更する必要があります。私に聞かせてください:あなたはタップまたはその性質の何かで細胞を拡大しようとしていますか?セルの高さを変更する条件は何ですか? –

+0

実際には、私のifステートメントは、特定の日付であればテーブルビューのセルは313、そうでなければ0であると言っています。if(month == 5 && day == 14 && year = = 2017){ else { } – iFunnyVlogger

0

は、私の知る限りは、あなたの質問を理解して、あなたのUITableViewCellの高さを変更したいです。このような場合はUITableViewデリゲート関数、つまりheightForRowAt indexPathを使用することをおすすめします。以下は

コードスニペットです:

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
{ 
if(month == 6 && day == 5 && year == 2017) { 
// Here I want the height to be set to 313 
} else { 
// Here I want the height to be set to 0 
} 
} 
関連する問題