2017-01-11 11 views
0

別のViewControllerを表示するtableViewデータがない場合、どのようにアプリケーションを構築しますか?tableviewデータが空の場合、別のviewcontrollerを表示する方法

ウェブでは、テーブルビューにデータがないのに別のビューを表示する必要がある場合にメッセージを表示する方法を示します。そのビューコントローラ(PlaceholderVC)にはイメージとラベル(404のスタイルの付いたページなど)があります。

基本的に、最初の画面(初期)では、ユーザーがtableViewに移動するためのボタンをタップします。ナビゲーションバーでは、項目を使用して新しい表セル(データ)を作成できます。あなたがtableViewコントローラ(FeedVC)に移動しない限り、そのアイテムを作成する他の方法はありません。私はこれが正しく働くように奮闘しています。私が実装したのは多くのバグがあります:

//FeedVC 
let data = [] 
viewDidLoad() { 
[...] 
} 

numberOfRowsInSection { 
    if data.count == 0 { 
    showPlaceholderVC() 
    } else { 
    return data.count 
    } 
} 

func showPlaceholderVC() { 
    let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    let pc: PlaceholderVC = storyboard.instantiateViewController(withIdentifier: "placeholderVC") as! PlaceholderVC 
    self.showDetailViewController(pc, sender: Any?.self) 
} 

それは私にPlaceholderVCにかかります。そのPlaceholderVCpresent VCは新しいテーブルセルを作成することができます。私がセーブを押すと、それは却下され、PlaceholderVCに戻ります。私はpresentFeedVCに保存機能を変更することができますが、私は用量がdismiss()になるはずです。 data > 0と私が新しいデータを作成した場合、そのfuncを保存してもまだ存在します。何が起こっているのを見ますか?保存するといくつかのコードが実行され、終了します。私はより多くのレイヤーにレイヤーを追加したくないです。

隠し画像を追加してtableViewにラベルを付けることができれば、クリーンなコードを作成できます。それは可能ですか?私は、tableView上の画像ビューをドラッグすると、それは縮小します。

私はこれをすべて動作させることができますが、あまりにも多くの "ifs"は多くの "プレゼント"を持つすべてのVCです。

+0

、あなただけ正しく制約を設定してのUITableViewController – Paulw11

+0

は私がそれを試してみましょうあなたはのUIViewControllerを使用していることを確認していないようにする必要があり:それはのようにすることができます。 – Sylar

+0

@ Paulw11私はあなたのアプローチを使用すると思います。私は代わりにビューを使用して、私のtableviewの下に配置しました(自動レイアウトはここで動作します)。コントローラーで: 'data == 0、view.isHidden = true/false'それは私のために最適です。ありがとう。 – Sylar

答えて

0

あなたが発行するごとに以下の手順を実行する必要があります。

  1. あなたがWebサービスを呼び出す場合、応答チェック配列のサイズを取得する上で、最初の呼び出しWebサービス。配列サイズが0より大きい場合は、テーブルにデータを表示できることを意味し、配列が空の場合は、デフォルトまたはプレースホルダーコントローラーで移動する必要があります。
+0

前に試しました。プレースホルダvcはvcを優先してデータを作成します。私がセーブすると、placeholdervcに戻ります。 – Sylar

0

プレースホルダテキストを表示するために、常に別のビューコントローラをプッシュしますか?

そうでない場合は、メインビューのサブビューとしてtableViewを、メインビューのサブビューとしてplaceholderViewを再度設定できます。

データに応じてtableViewを非表示にすることができます。

あなたがあなたのコードにサードパーティのライブラリを使用することを許可している場合、あなたは(あなたはデータがないときに見せたいものは何でもして)隠しビューを取って、私によるとDZNEmptyDataSet

0

を参照することができますが、より良いアプローチです。あなたがテーブルビュー上の画像を持つことができます

@IBOutlet weak var mEmptyView: UIView! 
@IBOutlet weak var mTableView: UITableView! 
    var tableViewDataArray: [String] = [] 


    override func viewDidLoad() { 
     super.viewDidLoad() 
    tableViewDataArray = //get array from your resource// 
    if tableViewDataArray.count > 0 { 
    mEmptyView.hidden = false 
    mTableView.hidden = true 
    }else{ 
    mEmptyView.hidden = true 
    mTableView.hidden = false 
    } 


} 
関連する問題