簡單iOS備忘錄App實現(xiàn)

簡單iOS備忘錄App實現(xiàn)

詳細內(nèi)容參考《瘋狂iOS講義》--李剛編著

完整代碼放到了GitHub呻顽。LeeLom MemoDemo
一個很簡單的iOS Demo晌块,主要用來實現(xiàn)一下iOS應用程序沙盒的功能弊仪。

程序功能

允許用戶自行添加但绕,刪除數(shù)據(jù)行齿椅,并且利用沙盒實現(xiàn)了數(shù)據(jù)的持久化戈轿。

程序界面.png

點擊保存按鈕

實現(xiàn)過程

由于界面很簡單症副,所以所有的界面都通過變成方式完成店雅。

  1. 添加導航欄,并在導航欄上添加三個按鈕分別為:添加瓦糕,刪除底洗,保存
    //設置界面
    UINavigationBar* navBar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 20, 320, 44)];
    [self.view addSubview:navBar];
    UINavigationItem* item = [[UINavigationItem alloc]initWithTitle:@"備忘錄"];
    navBar.items = [NSArray arrayWithObject:item];

     UIBarButtonItem* addBtn = [[UIBarButtonItem alloc]initWithTitle:@"添加" style:UIBarButtonItemStylePlain target:self action:@selector(addItem:)];
     UIBarButtonItem* removeBtn = [[UIBarButtonItem alloc]initWithTitle:@"刪除" style:UIBarButtonItemStylePlain target:self action:@selector(removeItem:)];
     //將添加和刪除按鈕放在導航欄左邊
     item.leftBarButtonItems = [NSArray arrayWithObjects:addBtn,removeBtn, nil];
     
     UIBarButtonItem* saveBtn = [[UIBarButtonItem alloc]initWithTitle:@"保存" style:UIBarButtonItemStylePlain target:self action:@selector(save:)];
     item.rightBarButtonItem = saveBtn;
    

其中三個按鈕分別添加了各自的方法addItem,removeItem,save。

  1. 實現(xiàn)三個按鈕各自的方法
    添加按鈕方法:addItem
    這個方法實現(xiàn)的功能:用戶點擊添加按鈕咕娄,頁面出現(xiàn)一個UILabe和UITextField,同時由于程序運行過程中亥揖,沙盒已經(jīng)有數(shù)據(jù),所以還要考慮加載已經(jīng)存在的數(shù)據(jù)圣勒。
    用戶點擊添加按鈕
    -(void)addItem:(id)sender{
    [self addItem:sender content:nil];
    }
    利用重載方法在界面中實現(xiàn)數(shù)據(jù)的顯示
    -(void)addItem:(id)sender content:(NSString)content{
    //點擊添加后頁面出現(xiàn)一個新的label和Textfiled
    UILabel
    label = [[UILabel alloc]initWithFrame:CGRectMake(10, nextY, 80, 30)];
    label.text = [NSString stringWithFormat:@"第%d項",i];
    [self.labelArray addObject:label];
    [self.view addSubview:label];

         UITextField* textField = [[UITextField alloc]initWithFrame:CGRectMake(100, nextY, 210, 30)];
         textField.borderStyle = UITextBorderStyleRoundedRect;
         if (content != nil && content.length > 0) {
             textField.text = content;
         }
         
         //為textField綁定EdittingDidEndOnExit事件監(jiān)聽器
         [textField addTarget:self action:@selector(resign:) forControlEvents:UIControlEventEditingDidEndOnExit];
         [self.fieldArray addObject:textField];
         [self.view addSubview:textField];
         nextY += 40;
         i++;
     }
    

刪除按鈕方法:removeItem
這個方法實現(xiàn)的功能费变,刪除頁面最后一個UILabel,UITextField。
-(void)removeItem:(id)sender{
//獲取最后一個元素,yuansu
UILabel* lastlabel = [self.labelArray lastObject];
UITextField* lastTextFiled = [self.fieldArray lastObject];

        //從程序界面中刪除
        [lastlabel removeFromSuperview];
        [lastTextFiled removeFromSuperview];
        
        //從數(shù)組中刪除
        [self.labelArray removeObject:lastlabel];
        [self.fieldArray removeObject:lastTextFiled];
        
        nextY -= 40;
        i--;
    }

保存按鈕方法:save
這個方法的功能主要是實現(xiàn)用戶點擊添加或刪除后圣贸,不僅改變了頁面的數(shù)據(jù)挚歧,并將改變的數(shù)據(jù)傳遞到應用程序沙盒當中。
-(void)save:(id)sender{
NSMutableArray* array = [[NSMutableArray alloc]init];

        for (UITextField* tf in self.fieldArray) {
            [array addObject:tf.text];
        }
        //調(diào)用NSMutableArray的方法將結(jié)合數(shù)據(jù)寫入屬性列表中
        [array writeToFile:[self filePath] atomically:YES];
        //使用UIActiongSheet提示用戶保存成功
        UIActionSheet* sheet = [[UIActionSheet alloc]initWithTitle:@"保存成功" delegate:nil cancelButtonTitle:nil destructiveButtonTitle:@"確定" otherButtonTitles:nil, nil];
        [sheet showInView:self.view];
    }
  1. 其他的兩個方法
    3.1 用戶點擊保存吁峻,激發(fā)sava方法時滑负,程序把多條數(shù)據(jù)收集到NSArray集合中在张,在調(diào)用NSArray的writeToFile:(NSString)filePath atomically:(BOOL)flag方法寫入屬性文件。
    -(NSString ) filePath{
    //獲取應用的Documents路徑
    NSArray
    paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString
    documentsDirectory = [paths objectAtIndex:0];
    //NSLog([NSString stringWithFormat:@"%@/myList.plist",documentsDirectory]);
    return [NSString stringWithFormat:@"%@/myList.plist",documentsDirectory];
    }
    3.2 用戶輸入完畢矮慕,UITextField需要自動退出
    -(void)resign:(id)sender{
    //保證鍵盤能夠在輸入之后關(guān)閉
    [sender resignFirstResponder];
    }

至此帮匾,整個備忘錄APP設計完成。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末痴鳄,一起剝皮案震驚了整個濱河市瘟斜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌痪寻,老刑警劉巖螺句,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蟹倾,死亡現(xiàn)場離奇詭異碾局,居然都是意外死亡,警方通過查閱死者的電腦和手機祟敛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門猫态,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佣蓉,“玉大人披摄,你說我怎么就攤上這事亲雪。” “怎么了疚膊?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵义辕,是天一觀的道長。 經(jīng)常有香客問我寓盗,道長灌砖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任傀蚌,我火速辦了婚禮基显,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘善炫。我一直安慰自己撩幽,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布箩艺。 她就那樣靜靜地躺著窜醉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪艺谆。 梳的紋絲不亂的頭發(fā)上榨惰,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音静汤,去河邊找鬼琅催。 笑死居凶,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的藤抡。 我是一名探鬼主播排监,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杰捂!你這毒婦竟也來了舆床?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嫁佳,失蹤者是張志新(化名)和其女友劉穎挨队,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒿往,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡盛垦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瓤漏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腾夯。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蔬充,靈堂內(nèi)的尸體忽然破棺而出蝶俱,到底是詐尸還是另有隱情,我是刑警寧澤饥漫,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布榨呆,位于F島的核電站,受9級特大地震影響庸队,放射性物質(zhì)發(fā)生泄漏积蜻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一彻消、第九天 我趴在偏房一處隱蔽的房頂上張望竿拆。 院中可真熱鬧,春花似錦宾尚、人聲如沸丙笋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽不见。三九已至,卻和暖如春崔步,著一層夾襖步出監(jiān)牢的瞬間稳吮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工井濒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灶似,地道東北人列林。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像酪惭,于是被迫代替她去往敵國和親希痴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

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

  • { 11春感、核心動畫 需要簽協(xié)議砌创,但是系統(tǒng)幫簽好 一、CABasicAnimation 1鲫懒、創(chuàng)建基礎動畫對象 CAB...
    CYC666閱讀 1,547評論 2 4
  • iOS開發(fā)系列--網(wǎng)絡開發(fā) 概覽 大部分應用程序都或多或少會牽扯到網(wǎng)絡開發(fā)嫩实,例如說新浪微博、微信等窥岩,這些應用本身可...
    lichengjin閱讀 3,661評論 2 7
  • 概述在iOS開發(fā)中UITableView可以說是使用最廣泛的控件甲献,我們平時使用的軟件中到處都可以看到它的影子,類似...
    liudhkk閱讀 9,059評論 3 38
  • //設置尺寸為屏幕尺寸的時候self.window = [[UIWindow alloc] initWithFra...
    LuckTime閱讀 816評論 0 0
  • 上一篇講到一天的真正工作時間是多少颂翼,那么我們應該如何提高一天真正的工作時間呢晃洒? 一:先思考,再工作你接到了領導的任...
    花之頁閱讀 354評論 0 0