2012-11-29 84 views
2

我只是一個普遍的理論問題,我希望能夠產生一些迴應。我一直在學習ios,並且有一個項目只有一個我正在修補的觀點。它具有一個運行循環,用於管理連接到服務器的套接字,並在聊天進入時獲取聊天信息。使用新聊天更新文本視圖。現在這個textview被附加到故事板一上。我現在要問,如果他們在故事板2上添加它時(我現在正在閱讀這個多頁面方面),那麼在視圖1中的聊天會繼續更新,儘管用戶當然不會看到它直到他們回到視野。第二個問題是我可以在第一個視圖控制器中同時更新故事板2和一個。我看到你可以將變量傳遞給我的書中的故事板2,但是我的套接字運行循環可以在視圖控制器中存在一個訪問視圖控制器的兩個變量。如果不是,這聽起來像我需要調查某種隊列,從telnet到故事板2進行通信更新。去在視圖之間共享信息在ios

回答

2

你剛開始時有一個非常複雜的項目 - 印象非常深刻。這裏有幾個關於故事板和賽車的簡要說明。

  • ,如果你設置使用視圖控制器,然後設置一個SEGUE到另一個視圖控制器故事板 - 當你Segue公司創建新的視圖控制器,原來是仍然在內存中,仍然可以以通知或如果回調響應你這樣編程。

    • 當你「彈出」或「解散」你的視圖控制器時,它會從內存中消失。

    • 當您繼續時,您將自動獲得對新視圖控制器的引用,該方法稱爲prepareForSeque。您可以將此引用存儲在屬性中,並根據需要使用該屬性進行更新。

因此,這裏是一個僞例如:

  • 視圖控制器一個有一些網絡代碼,我猜當緩衝器被填充它調用視圖控制器的方法。我們稱它爲networkMethod作爲參考。在網絡方法方面,假設你最終得到一個字符串,並且你想把這個字符串傳遞給你的視圖控制器b,所以你可以在那裏做一些事情。因此,我們不是僅僅設置一個變量,而是通過一個方法來傳遞它,所以你可以用它做一些事情。希望這種情況符合你的需求,否則我的例子的其餘部分將脫離基地。

任務 - 爲視圖控制器設置參考b。 在您的視圖控制器.h文件

#import "ViewControllerB.h" //this is the name of your view controller b class 

在視圖控制器在接口部分的進口段(h文件)地址:

@property (nonatomic, strong) ViewControllerB *viewB; 

在.m文件,你會觸發你繼續 - 也許在一個按鈕或一些行動。聽起來像是你已經有這個:

[self performSegueWithIdentifier:@"viewB" sender:self]; 

現在創建一個看起來像這樣的新方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    self.viewB = segue.destinationViewController; //this stores a reference for later 

}

現在,在你的回調方法,你可以參考視圖控制器B是這樣的:

-(void)networkCallbackMethod:(NSString*)stringData { 

    if (self.viewB) { 

    [self.viewB myCustomMethodUsingPassedData:stringData]; 

    } 


} 

然後終於在視圖控制器b你會有匹配的方法像這樣:

-(void)myCustomeMethodUsingPassedData:(NSString*)stringData { 
    //update the view here 
} 

應該大致爲您提供一個框架,在這裏可以設置兩個視點控制器,賽格瑞和抓住一個參考,然後根據需要更新新的視圖控制器。

希望有幫助。祝你好運。

+0

這看起來基本上像我在找什麼。只是創建兩個視圖之間共享的路徑。我對此進行了仔細閱讀,並會看看我是否可以設置一些。我半認爲必須有一些信息共享能力足夠強大,以保持意見都在類似的國家,看起來像是存在。在我的閱讀中,我發現在視圖之間存在可變傳遞,但迄今爲止還沒有很多數據。謝謝 – LanternMike

+0

我突出顯示了一個非常常見的模型,用於傳遞數據 - 我們將它稱爲父級或下一個視圖控制器。使用這種方法的強大之處在於,您可以傳遞數據,甚至可以在該子實例中調用方法。現在,如果你想讓孩子「回話」,常見的模式是「協議和代表」。這裏有很多關於堆棧溢出的文章,所以只需要搜索它。祝你好運。 – CocoaEv

+0

遠程登錄完成錯誤,我開始與這些想法一起工作。首先,我必須弄清楚如何將視圖控制器分配到新的故事板頁面,然後我使用你的方法在seque中分配了viewb,我進一步並命名了segue並檢查了那個,做了nslog (viewb)分配和它的工作感謝:) – LanternMike