簡體   English   中英

iOS / Objective-C:從共享實例更改View Controller中的屬性?

[英]IOS/Objective-C: Change property in View Controller from shared instance?

我的應用程序中的視圖控制器通過通過共享實例訪問的類從Web訪問某些數據。 此類執行各種服務器調用。

根據檢索到的內容,我想在viewcontroller中更改某些內容,該內容具有連接到標簽的插座屬性。 為此,在共享實例類中,我在故事板上分配了與視圖控制器關聯的init類,然后設置了outlet屬性。 但是,以下內容並未更改屏幕上的任何內容。

//通過共享實例訪問的文件中的代碼

    IDImportFacebookVC *vc= [[IDImportFacebookVC alloc] init];
        if (_contactCount==0) {
            NSString *emptyMessage = @"No friends found";
            vc.emptyMessage.text = emptyMessage;
        }

還有其他需要嗎? 另外,我認為這可能完全違反了MVC,因此,希望有任何有關更好方法的建議。

在此先感謝您的任何建議。

您正在創建一個新的視圖控制器,而不訪問屏幕上正在顯示的控制器。 屏幕上的一個(如果已經在屏幕上)已經具有已初始化的實例。 如果尚未顯示在屏幕上,則操作系統將從情節提要中初始化一個,而不會使用您剛初始化的一個。 即使按原樣,您初始化的對象也不會像預期的那樣工作,因為它沒有框架,也沒有在窗口或導航控制器中設置。

我認為,您的選擇要么按照您在評論中所說的發送通知,要么只是向共享實例添加一個屬性,該屬性包含要在屏幕上顯示的數據。

如果您確定一旦顯示了該屏幕,此數據將可用,那么該屬性方法將起作用,您可以在此僅基於共享實例的屬性來設置UI元素。 如果您不確定何時可以獲取數據,則可能還需要進行通知。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM