[iOS]關於TableView在programing 的一些心得

在開始寫iOS的程式開始,我一直對於整個Cocoa mvc的架構不習慣。

可能是之前設計Windows 的關係,許多的新的架構與方式會需要用很多的心力來了解。

在這裡試著記錄一些關於TableView的心得:

 

利用New File建立第一個TableView所遇到的第一個新增資料的crash:

一開始利用Storyboard來建立第一個TableView範例的時候,最容易遇到的就是crash在cellForRowAtIndexPath。

裡面最大的原因就是,如果你自己在Storybord上面建立一個TableViewController,並且透過新增ObjectC++ file來新增對應的ViewController.m

裡面就會發生一個問題就是Cell identifier的問題,解決方法有兩種:

  • 在storyboard上面把cell的identifier 加上去預設名稱”cell”

  • 或是在程式碼裡面有error handle如下 

 if (!cell) 
{       
   cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@”My cell”];
}

 

關於TableView資料處理概念:

iOS的TableView處理與撰寫Windows table的處理最大的不同就是對於資料處理的邏輯。

相較於Windows是一次把資料加入或是一筆筆新增或是刪除的方式。iOS必須得依照以下方式給資料

  • 必須先給你有幾個section (也可以當成是有幾個小表格)[numberOfSectionsInTableView]

  • 一個表格裡面有多少資料(row)  [numberOfRowInSection]

  • 確定之後,他會每一比資料都來問你裡面的內容 [cellForRowAtIndexPath]

利用deleteRowAtIndexPaths刪除含有CoreData的TableView欄位,會出現Crash:

這個問題也找了一下,詳細的程式碼與問題可以參考http://stackoverflow.com/questions/4057199/animating-row-deletion-in-uitableview-with-coredata-gives-assertion-failure

後來在Apple 範例程式找到一些線索(CoreDataBook)或是找官方資料
http://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/Art/table_view_editing.jpg

解決方式就是把deleteRowAtIndexPaths 由TableView觸發的event commitEditingStyle 搬移到 CoreData的delegate didChangeObject 

[讀書心得] 我的夢想干你屁事

NewImage

  • 作者:朱學恆

  • 出版社:就是創意

  • 出版日期:2012年06月29日

  • 語言:繁體中文 ISBN:9789862169766

  • 裝訂:平裝

內容簡介:

 

但是許多年輕人仍然有許多的問題,這本書就是記錄著朱學恆在巡迴演之餘,許多人在信件來往中的一些資料。

如同之前的書本差不多,其實這一本書有許多都是由他的部落格朱學恒的阿宅萬事通事務所擷取一些出來。

不過如同就像這幾年朱學恆不斷的在努力的事情一樣,鼓勵大家要積極的追求夢想就是本書的重點。

這本書有著許多值得推薦的內容,有著追求理想而努力在國外推銷台灣的電音三太子吳建衡的故事、也有著數十年訓練自己的太陽馬戲團陳星合的故事

當然裡面有著更多就是與讀者(參加演講的聽眾)在信件上的往來,不斷著鼓勵著不論是失戀的少男、感受到挫折的少女、還有想要朝向漫畫之路的美工學生

如同我之前所買過的一些朱學恆的書籍,雖然他的部落格可能都可以找到相關的文章,也可能在部落格看到許多漂亮的大圖

不過我個人還是喜歡聽著五月天的第二人生,然後來細細品味這本書;

[youtube http://www.youtube.com/watch?v=amv7CzCmHU0]

第二人生 (歌詞來源:歌詞帝國
作曲:怪獸
編曲演奏:五月天+可樂 Cola Kai
Midi program:阿信+怪獸+阿璞(八三夭)
鍵盤演奏:周恒毅
和聲演唱:士杰+可樂 Cola Kai

你聽到鬧鐘聲 你推開了抱枕 你醒在 無盡的 疲倦的人生
英雄沒有出現 奇蹟沒有發生 你只有 苦澀的 即溶咖啡粉

你天天看新聞 在等什麼發生 讓人生 再重頭 再起死回生
地心沒有沸騰 隕石沒有傾盆 只有你 和日子 長滿了灰塵

期待一趟旅程 精采萬分 你卻還在等
等到荒廢青春 用盡體溫 才開始悔恨

期待一種永恆 卻怕傷痕 怕碎骨粉身
最後還是一個人 沒有神 你孤獨的生存

你才剛出了門 你就開始在等 你等著 快回家 回你的圍城
命運如果有門 名字就叫心門 並不是 能不能 而是肯不肯

生命不是過程 而是美麗旅程 風景有 亮和暗 也有愛和恨
第一站叫天真 第二站叫青春 下一站 的名字 等你去確認

期待一趟旅程 精采萬分 你卻還在等
等到荒廢青春 用盡體溫 才開始悔恨

期待一種永恆 即使傷痕 也奮不顧身
也許會有一個人 陪著你 向新人生啟程

每個靈魂 每個人 每次 劫後餘生
每個心跳 每滴淚 在等 絕處逢生
如果命運註定你的誕生 如果末日始終沒有發生
不要等到來生 讓此時此刻 能不虛此生

期待一趟旅程 精采萬分 你不該再等
別到荒廢青春 用盡體溫 才開始悔恨

期待一種永恆 即使傷痕 也奮不顧身
生命還沒有黃昏 下一站 你的第二人生

你的第二人生

[PHOTO CMS] 利用Dural來架設相簿網站與支援多重相片上傳

其實之前就有在使用4images來架設相簿,不過由於本人喜歡一次選取多個相片上傳,所以有使用Jupload的Java Applet,偏偏最近IE更新與Java更新後一直無法正常作用,看來得更換新的相簿管理網站。

期間也是有試用過其他的相簿網站:

  • ZenPhoto
    • 看起來不錯,但是由於AppServ版本有點舊,無法正常安裝。可能晚些時間再研究。
  • Gallery
    • 3.0 不支援AppServ,安裝2.X之後整體功能完整。但是由於上傳界面還是屬於醜醜的Java Applet可能先當成備案,再看看有沒有其他的網站軟體。
  • Dural:
    • 算是老牌的CMS軟體,而且跟我覺得多重像片上傳的API Plupload整合的很好,現在可能會開始研究這個。

接下來就記錄一下如何利用Dural來架設相簿網站,我的環境有點舊,有需要的人再看吧:

[iOS][Three20]Mac Blog App 使用心得與 Three20 初體驗

從上個禮拜MBA入手之後,就開始研究關於Mac OS上面的一些操作。

首先要先弄好的就是撰寫Blog的系統,以下是一些研究心得:

 

Mac上撰寫Blog系統使用心得:

  1. Ecto: 其實很好用,但是有著致命的空行問題,看來不會修。放棄!
  2. Qumana: 對於貼上程式碼支援不好,貼圖也不方便。
  3. Blogo: 連Launch都不行,應該跟我的版本有關,繼續找找。
  4. ScriptFile:不算是App因為是Chrome extension (Filefox也有),支援算差!
  5. MarsEdit: 用到現在最佳的,不可以編輯隱藏blog,但是貼程式碼相當順暢!

參考文章:

 

這些試用過後,應該會繼續使用MarsEdit當作目前的方案 如果真的遇到無法解決的問題,灌VirtualBox弄個Win7來寫Blog也是有可能的。

 

以下是整理Three20的初步體驗心得:

  • 下載Three20 程式碼 http://three20.info/roadmap/1.0.6.2

  • 在Xcode建立一個View base App

  • 使用終端機輸入以下指令去把Framework加入

    python three20/src/scripts/ttmodule.py -p Three20Test1/Three20Test1.xcodeproj Three20 –xcode-version=4

    • 注意相關的路徑
  • 打開專案會看到相關Framework 加好了,接下來你需要的是找一些範例來展示Three20的火力

參考以下網頁找範例:

[iOS]在iPHONE上使用MEDIA PLAYER播放的相關程式碼

在iOS要撥放影片其實有兩種播放器的source可以使用。 一個就是Media Player (MPMoviePlayerController),另一個是AVPlayer (AV Foundation)。

這裡會介紹一些簡單使用Media Player的相關程式碼。 主要有幾個部分,第一個部份就是設定撥放來源,在這裡是使用網路上的檔案。

接下來的部分就是關於撥放得相關設定

//強迫旋轉你的iDevice (這裡是橫放)
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];

 // 設定撥放器的外觀
 [WebPlayer setControlStyle:MPMovieControlStyleFullscreen];
        [WebPlayerr setFullscreen:YES];

 //設定影片比例的縮放、重複、控制列等參數

//影片旋轉90度
WebPlayer.view.transform = CGAffineTransformMakeRotation(1.5707964);
WebPlayer.scalingMode = MPMovieScalingModeAspectFit;

WebPlayer.repeatMode = MPMovieRepeatModeNone;

//將影片加至主畫面上

WebPlayer.view.frame = self.view.bounds;

[self.view addSubview:WebPlayer.view];

//開始播放
 [WebPlayer play];

這樣其實就可以撥放全螢幕的影片並且將手機橫放

如果播放完影片要可以回到原來的畫面,則要多接收一個Observer.

// 註冊endPlay 當撥放完畢的時候,會收回傳的通知

 [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(endPlay:)
                                                     name:MPMoviePlayerPlaybackDidFinishNotification
                                                   object:WebPlayer];

最後就是放endPlay的所有內容,裡面的重點在釋放撥放器與回到iDevice相關設定

-(void)endPlay: (NSNotification*)notification
{
	//解除註冊回傳
	[[NSNotificationCenter defaultCenter] removeObserver:self 	name:MPMoviePlayerPlaybackDidFinishNotification object:WebPlayer];

	//將你的iDevice 轉回來
	 [[UIApplication sharedApplication] 	setStatusBarOrientation:UIInterfaceOrientationPortrait animated:YES];

	//停止播放
	 [WebPlayer stop];
	//Release control

	[WebPlayer release];

	//現在的view 移除~ 回到原本的view
	[WebPlayer.view removeFromSuperview];

}

參考文章:

XReadr–A simple Google Reader App on Windows Phone 7

Finally, I decide to release the source code of my Windows Phone Google Reader App.

Please feel free to https://xreadr.codeplex.com/ here.

Here is my project summary:

Project Description
XReadr is a simple Windows Phone 7 app using Google Reader API.
It already has login, browse and mark it as read function here.
XReadr is simple Windows Phone 7 App which using Google Reader API.
It also has follow function:

  1. Login page which using HttpWebRequest
    XReadr.jpg
  2. Browse Unread Labels
    XReadr2.jpg
  3. Browse every news on Label
    XReadr3.jpg
    I also put the first draft of source code, I hope it could help all of you which want to write more Windows News App here.
    More implementation detail about how Windows Phone to use Google Reader API, please refer my blog here:
    http://www.evanlin.com/blog/archives/001138.html
    http://www.evanlin.com/blog/archives/001139.html
    It write by Traditional Chinese, feel free to ask me via English.