2017-09-13 8 views
0

私のアプリにはソーシャルフィードページが含まれています。別のストーリーボードシーンからfeed viewControllerを呼び出しているときに、フィードページテーブルが空白になっています。viewControllerがiOSの別のストーリーボードシーンから呼び出されたときに、テーブルビューが空白になっています(ロード中または再構築中)

コードは、別のストーリーボードシーンからfeed viewControllerを呼び出している以下の言及です。私は別のストーリーボードのシーンからフィードページを呼び出してから観察する何

let feedPage: UIViewController = UIStoryboard(name:"ActivityFeed",bundle:nil).instantiateInitialViewController()! 
let window :UIWindow = UIApplication.shared.keyWindow! 
window.rootViewController = feedPage 

window.makeKeyAndVisible() 

は、フィードページが再作成されているので、テーブルとしても再作成されています。 同じストーリーボードで別のシーンを切り替えるときに、この問題は起こっていません。 私は誰か手掛かりを得ている場合は、iOSに新しいです。

フィードページviewDidLoadメソッド:あなたは別のストーリーボードのシーンからアクティビティフィードを呼び出している

override func viewDidLoad() { 
    super.viewDidLoad() 
    //createTable() 
    print("viewDidLoad:ActivityPage") 
    facebookLoginHandler = FacebookLogin(controller: self) 

    screenWidth = UIScreen.main.bounds.width 
    screenHeight = UIScreen.main.bounds.height 
    screenScale = UIScreen.main.scale 
    if screenScale == 3{ 
     screenScale = 2 
    }else if screenScale == 1{ 
     screenScale = 1.23 
    }else if screenScale == 2{ 
     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.pad){ 
      screenScale = 1 
     }else{ 
      screenScale = 2 
     } 
    } 

    DispatchQueue.main.async { 
     ActvityFeedNetwork.getActivityFeedFromServer(viewController: self) 
    } 
    tableView.delegate = self 
    tableView.dataSource = self 

    if userLoggedIn { 
     statusBarNotSignedIn.removeFromSuperview() 
     navigationBar.topItem!.title = "Activity Feed" 
    } 
    else { 
     statusBarSignedIn.removeFromSuperview() 
    } 
    effect = visualEffectView.effect 
    visualEffectView.effect = nil 
    visualEffectView.alpha = 0 
    visualEffectView.backgroundColor = UIColor.black 

} 
+0

私はActivityFeed VCのコードを表示します。 –

+0

viewDidLoadメソッドコードを追加しました。チェックしてください。 –

答えて

0

がメインビューシーンを想定するので、X-コードから初期ビューコントローラとして、メインビューストーリーボードのシーンを作る X-コード - >メイン・ビュー・コントローラー - >サイド・コンソール/クラス・インスペクター - >ティック・オンは初期ビュー・コントローラーです。

メイクルートビューコントローラ

ため

をコードを追加し、それが動作する任意のビューコントローラに初期ビューコントローラからスイッチのセグエまたは現在のビューコントローラを使用する必要はありません。

1

あなたがRootViewControllerに使用を設定しようとしている場合は、次の変更は、私はその後、やったいただきました!

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 

    let window = UIWindow(frame: UIScreen.main.bounds) 
    let feedPage: UIViewController = UIStoryboard(name:"ActivityFeed",bundle:nil).instantiateInitialViewController()! 
    window.rootViewController = feedPage 

    window.makeKeyAndVisible() 

    return true 
} 

としてdidFinishLaunchingWithOptionsでコードを更新しますか?あなたには、いくつかの他のVCのUからActivityFeed VCをロードしようとしている場合

:ウィンドウのフレーム:) uは単に別のVCから1つのVCを読み込む

を逃した設定

let window = UIWindow(frame: UIScreen.main.bounds) 

あなたが必要とするすべてのアプリケーションのrootViewコントローラを設定するには を必要としません

もしあなたがモーダルにVCを提示しているのであれば、

ウル必要性につきとして、その後
if let feedPage = UIStoryboard(name:"ActivityFeed",bundle:nil).instantiateInitialViewController() { 
     self.present(vc, animated: true, completion: nil) 
    } 

あなたはVCを推進している場合

if let feedPage = UIStoryboard(name:"ActivityFeed",bundle:nil).instantiateInitialViewController() { 
     self.navigationController?.pushViewController(vc, animated: true) 
} 

場所上記のコードのいずれかと

を削除するには、ウィンドウを聞かせて:UIWindow = UIApplication.shared.keyWindow! window.rootViewController = feedPage

ウィンドウ。

+0

@Mukesh Gami:答えは –

+0

です。この関数 "funcアプリケーション(_アプリケーション:UIApplication、didFinishLaunchingWithOptions launchOptions:[UIApplicationLaunchOptionsKey:Any]?)を追加する必要がありますか? - > Bool" –

+0

@ mukesh-gami:これはアプリケーションのrootViewControllerを設定することです。rootViewControllerは、uが別のVCからviewControllerをロードしようとしたときにアプリケーションを起動するときにロードされる初期View Controllerです。次にrootViewControllerを設定する必要はありません。 –

関連する問題