第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在視圖控制器之間傳遞數(shù)據(jù)

在視圖控制器之間傳遞數(shù)據(jù)

iOS
泛舟湖上清波郎朗 2019-05-20 16:29:02
我是iOS和Objective-C以及整個MVC范例的新手,我堅持以下內(nèi)容:我有一個視圖作為數(shù)據(jù)輸入表單,我想讓用戶選擇多個產(chǎn)品。產(chǎn)品列在另一個帶有a的視圖中,UITableViewController我啟用了多個選擇。我的問題是,如何將數(shù)據(jù)從一個視圖傳輸?shù)搅硪粋€視圖?我將UITableView在數(shù)組中保留選擇,但是如何將其傳遞回上一個數(shù)據(jù)輸入表單視圖,以便在提交表單時將其與其他數(shù)據(jù)一起保存到Core Data?我已經(jīng)四處瀏覽并看到一些人在app delegate中聲明了一個數(shù)組。我讀了一些關(guān)于單身人士的事情,但不明白這些是什么,我讀了一些關(guān)于創(chuàng)建數(shù)據(jù)模型的內(nèi)容。執(zhí)行此操作的正確方法是什么?我將如何進行此操作?
查看完整描述

4 回答

?
哆啦的時光機

TA貢獻1779條經(jīng)驗 獲得超6個贊

MVC中的M用于“模型”,而在MVC范例中,模型類的作用是管理程序的數(shù)據(jù)。模型與視圖相反 - 視圖知道如何顯示數(shù)據(jù),但它不知道如何處理數(shù)據(jù),而模型知道如何處理數(shù)據(jù)的所有內(nèi)容,但不了解如何顯示數(shù)據(jù)。模型可能很復(fù)雜,但它們不一定是 - 您的應(yīng)用程序的模型可能像字符串或字典數(shù)組一樣簡單。

控制器的作用是在視圖和模型之間進行調(diào)解。因此,它們需要引用一個或多個視圖對象和一個或多個模型對象。假設(shè)您的模型是一個字典數(shù)組,每個字典代表表中的一行。應(yīng)用程序的根視圖顯示該表,它可能負責從文件加載數(shù)組。當用戶決定向表中添加新行時,他們會點擊一些按鈕,您的控制器會創(chuàng)建一個新的(可變的)字典并將其添加到數(shù)組中。為了填充行,控制器創(chuàng)建一個詳細視圖控制器并為其提供新的字典。詳細視圖控制器填寫字典并返回。字典已經(jīng)是模型的一部分,因此沒有其他任何事情需要發(fā)生。


查看完整回答
反對 回復(fù) 2019-05-20
?
智慧大石

TA貢獻1946條經(jīng)驗 獲得超3個贊

有多種方法可以將數(shù)據(jù)接收到iOS中的不同類。例如 -

  1. 分配另一個類后直接初始化。

  2. 委派 - 用于傳回數(shù)據(jù)

  3. 通知 - 用于一次向多個類廣播數(shù)據(jù)

  4. 保存NSUserDefaults- 以便稍后訪問

  5. 單身人士課程

  6. 數(shù)據(jù)庫和其他存儲機制,如plist等。

但是對于將值傳遞給在當前類中完成分配的其他類的簡單方案,最常見和首選的方法是在分配后直接設(shè)置值。這樣做如下: -

我們可以使用兩個控制器來理解它 - Controller1和Controller2

假設(shè)在Controller1類中,您要創(chuàng)建Controller2對象并使用傳遞的String值推送它。這可以這樣做: -

- (void)pushToController2 {

    Controller2 *obj = [[Controller2 alloc] initWithNib:@"Controller2" bundle:nil];
    [obj passValue:@"String"];
    [self pushViewController:obj animated:YES];}

在Controller2類的實現(xiàn)中,將有以下功能 -

@interface Controller2  : NSObject@property (nonatomic , strong) NSString* stringPassed;@end@implementation Controller2
@synthesize stringPassed = _stringPassed;- (void) passValue:(NSString *)value {

    _stringPassed = value; //or self.stringPassed = value}@end

您也可以使用與此類似的方式直接設(shè)置Controller2類的屬性:

- (void)pushToController2 {

    Controller2 *obj = [[Controller2 alloc] initWithNib:@"Controller2" bundle:nil];
    [obj setStringPassed:@"String"];  
    [self pushViewController:obj animated:YES];}

要傳遞多個值,您可以使用多個參數(shù),例如: -

Controller2 *obj = [[Controller2 alloc] initWithNib:@"Controller2" bundle:nil];[obj passValue:@“String1” andValues:objArray withDate:date];

或者,如果需要傳遞超過3個與常用功能相關(guān)的參數(shù),則可以將值存儲到Model類中,并將該modelObject傳遞給下一個類

ModelClass *modelObject = [[ModelClass alloc] init]; modelObject.property1 = _property1;modelObject.property2 = _property2;
modelObject.property3 = _property3;Controller2 *obj = [[Controller2 alloc] initWithNib:@"Controller2" bundle:nil];[obj passmodel: modelObject];

所以,如果你想 -

1) set the private variables of the second class initialise the values by calling a custom function and passing the values.2) 
setProperties do it by directlyInitialising it using the setter method.3) pass more that 3-4 values related to each other in some manner , 
then create a model class and set values to its object and pass the object using any of the above process.

希望這可以幫助


查看完整回答
反對 回復(fù) 2019-05-20
  • 4 回答
  • 0 關(guān)注
  • 924 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號