Objective-C界面?zhèn)髦?一):屬性傳值

屬性傳值

顧名思義,屬性傳值是通過(guò)類的屬性來(lái)進(jìn)行值得傳遞.屬性傳值是最容易理解的一種傳值方式.通常程序中頁(yè)面的從前向后傳值應(yīng)用的都是屬性傳值.下面我們來(lái)看一下代碼的實(shí)現(xiàn):

AppDelegate.m

- (void)dealloc
{
    [_window release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application     didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    ViewController *vc = [[ViewController alloc] init];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
    self.window.rootViewController = nav;

    [vc release];
    [nav release];
    [_window release];
    
    return YES;
}

ViewController.h

@interface ViewController : UIViewController

@property(nonatomic, copy) NSString *string;

@end

這里聲明的字符串string就是我們要從第一頁(yè)傳到第二頁(yè)的值.

ViewController.m

#import "ViewController.h"
#import "SecondViewController.h"

@interface ViewController ()

@property(nonatomic, retain) UITextField *textField;

@end

@implementation ViewController

- (void)dealloc
{
    [_textField release];
    [super dealloc];
}

- (void)loadView
{
    [super loadView];
    
    self.view.backgroundColor              = [UIColor whiteColor];
    self.navigationItem.title              = @"首頁(yè)";
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem         alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd     target:self action:@selector(didClickedRightBarButton:)];

    self.textField                         = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 175, 40)];
    self.textField.placeholder             = @"請(qǐng)輸入文本";
    self.textField.borderStyle             =     UITextBorderStyleRoundedRect;
    [self.view addSubview:_textField];
}

- (void)didClickedRightBarButton:(UIBarButtonItem *)barButton
{
    SecondViewController *vc2 = [[SecondViewController alloc] init];
    vc2.secondString          = self.textField.text;
    //屬性傳值就在此執(zhí)行,在我們push頁(yè)面時(shí)需要在首頁(yè)的按鈕點(diǎn)擊方法中建立一個(gè)新的SecondViewController的對(duì)象,在這里也就是vc2
    //而我們?cè)赟econdViewController中已經(jīng)聲明了一個(gè)屬性secondString用來(lái)接收傳過(guò)去的值
    //所以vc2現(xiàn)在要進(jìn)行的操作我們可以理解為將要傳的值存在vc2自己的屬性secondString中
    [self.navigationController pushViewController:vc2 animated:YES];
}

ViewController中僅初始化一個(gè)textField用來(lái)輸入字符串
直接使用navigationItemrightBarButton創(chuàng)建一個(gè)執(zhí)行push頁(yè)面方法的按鈕,點(diǎn)擊后可以將頁(yè)面推送到第二頁(yè).

SecondViewController.h

  @interface SecondViewController : UIViewController
  
  @property(nonatomic, copy) NSString *secondString;
  
  @end

SecondViewController中創(chuàng)建一個(gè)屬性secondString用來(lái)接收第一頁(yè)傳過(guò)來(lái)的值.

@interface SecondViewController ()

@property(nonatomic, retain) UITextField *textField;

@end

@implementation SecondViewController

- (void)dealloc
{
    [_textField release];
    [super dealloc];
}

- (void)loadView
{
    [super loadView];

    self.view.backgroundColor             = [UIColor whiteColor];
    self.navigationItem.title             = @"第二頁(yè)";
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(didClickedLeftBarButton:)];

    self.textField                        = [[UITextField alloc]     initWithFrame:CGRectMake(100, 100, 175, 40)];
    self.textField.placeholder            = @"請(qǐng)輸入文本";
    self.textField.borderStyle            =         UITextBorderStyleRoundedRect;
    self.textField.text                   = self.secondString;
    //這里進(jìn)行的就是將之前存在secondString中的值取出來(lái)放在textField中
    [self.view addSubview:_textField];
}

- (void)didClickedLeftBarButton:(UIBarButtonItem *)leftButton
{
    [self.navigationController popViewControllerAnimated:YES];
}

這里不再自定義button直接使用系統(tǒng)的按鈕樣式.

首頁(yè)文本框中輸入文本

會(huì)在第二頁(yè)的文本框中進(jìn)行顯示

總結(jié):屬性傳值通常用于從前向后的界面?zhèn)髦?當(dāng)然從后向前通過(guò)屬性傳值也是可以實(shí)現(xiàn)的,不過(guò)不推薦使用.因?yàn)樵诮缑孢^(guò)多的情況下,從后向前的屬性傳值過(guò)于繁瑣(需要通過(guò)下標(biāo)在棧中尋找要傳值的ViewController)且不夠靈活.在之后我寫(xiě)的文章中會(huì)介紹其他幾種傳值方式,更加靈活

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末定拟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌栈源,老刑警劉巖吊履,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件醉箕,死亡現(xiàn)場(chǎng)離奇詭異爬虱,居然都是意外死亡瞻离,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)临谱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)璃俗,“玉大人,你說(shuō)我怎么就攤上這事悉默〕腔恚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵抄课,是天一觀的道長(zhǎng)唱星。 經(jīng)常有香客問(wèn)我,道長(zhǎng)跟磨,這世上最難降的妖魔是什么间聊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮抵拘,結(jié)果婚禮上哎榴,老公的妹妹穿的比我還像新娘。我一直安慰自己僵蛛,他們只是感情好尚蝌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著充尉,像睡著了一般飘言。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上驼侠,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天热凹,我揣著相機(jī)與錄音,去河邊找鬼泪电。 笑死般妙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的相速。 我是一名探鬼主播碟渺,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼突诬!你這毒婦竟也來(lái)了苫拍?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤旺隙,失蹤者是張志新(化名)和其女友劉穎绒极,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蔬捷,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡垄提,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年榔袋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铡俐。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凰兑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出审丘,到底是詐尸還是另有隱情吏够,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布滩报,位于F島的核電站锅知,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏脓钾。R本人自食惡果不足惜喉镰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惭笑。 院中可真熱鬧侣姆,春花似錦、人聲如沸沉噩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)川蒙。三九已至蚜厉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間畜眨,已是汗流浹背昼牛。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留康聂,地道東北人贰健。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像恬汁,于是被迫代替她去往敵國(guó)和親伶椿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容