en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

1.30.2012

UITableView 的資料設定方式

 

UITableView 是 iOS 中,非常重要的使用者介面 ,仔細觀察 iOS 的應用程式,不然發現絕大部份的應用程式都會用上 UITableview,它的特性就是可以一次瀏覽所有的項目,並且可以用階層的方式顯示項目的細節。下面將從使用 Master-Detail Application 專案樣板開始,製作出一個簡單的 UITableView 的瀏覽介面,包含項目的設定與它的細節。


Master-Detail Application
Master-Detail Application 是 iOS SDK 所提供的專案樣板之一,它的功能就是建立一個主從式或是階層式的互動應用程式,如果在 iPhone 上呈現的就是 UITableView,而在 iPAD 上則是左右攔或是彈出式的 UITableView(Split View),對於想要製作純表單互動的應用程式來說,使用 Master-Detail Application 樣板開始你的專案,是個不錯的選擇,但是如果有其他考量,也可以參考以下做法製作類似 Master-Detail Application 樣板的環境。

首先在 Storyboard 上放置一個 Navigation Controller,它的作用是處理畫面複雜的階層關係,讓使用清楚地知道目前畫面所在的位置,與它的上下層關係。接下來我們將刪除畫面上的 Root View Controller 並替換成 Table View Controller,使用右鍵拖曳連線的方式,將 Navigation Controller 與 Table View Controller 建立關係(Relationship - RootViewController),如下圖。

將兩個 View Controller 建立關係

完成之後 Table View Controller 上方就會出現 Navigation Bar,接下在 Storyboard 放置一個 View Controller,來顯示由 Table View 所選擇的項目細節,同樣將 Table View Controller 與剛剛放置的 View Controller 建立關係,在 Segues Style 的部分選擇 Push,如下圖。

Segues Style 的部分選擇 Push

最後要替這兩個我們所放置的 View Controller(Table 與 View)產生 Class  好實作它們的操作,你可以在專案新增檔案 UIViewController subclass 的項目中找到彼此對應的類別,關於更多的設定細節,可以參考使用 Storyboard Segue 實作 UIViewController 的切換(上)使用 Storyboard Segue 實作 UIViewController 的切換(下)一文來作設定。


Table View 中顯示動態內容(Master)
在 Table View 中的資料內容可以分成靜態與動態兩種,如果你是使用 Master-Detail Application 樣板開始,你會發現在表格從已經替你填好了一筆靜態資料(Detail),你可以直接在 Storyboard 上編輯你的靜態資料,但這意味著你將無法透過程是執行的方式來改變這些資料的內容,如果要採用動態的方式,必須把 Table View 的 Content 屬性改成 Dynamic Prototypes。

將Table View 的 Content 屬性改成 Dynamic Prototypes

好了,現在我們可以開始產生動態資料了,首先來到 Table View Controller 對應的 MasterViewController class 裡,新增一個存放資料的陣列 roleArray。
@property (strong)NSArray *roleArray;
接著在 viewDidLoad 的方法函式內初始化這個陣列、設定其資料內容,並同時設定 Navigation Bar 的標題文字。
- (void)viewDidLoad {
    [super viewDidLoad];

    roleArray = [[NSArray alloc] initWithObjects:@"野蠻人", @"法師", @"弓箭手", @"盜賊", @"德魯伊", @"騎士", nil];
    [self setTitle:@"LEGO Heroica"];
}

接下來使用內建的方法函式來設定顯示資料量的數目,顯示的數目通常會與資料陣列的長度相同,但是切記如果顯示資料量的數目大於陣列的長度,很有可能在操作時因為錯誤的 Index 導致程式 crash。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [roleArray count];
}

最後則是使用另一個內建方法函式設定每筆資料的內容,每筆資料的內容理應與陣列的內容相同,此方法函式會依照上述設定的資料量數目執行數次,每次都會回傳一個表格欄位。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    //製作可重複利用的表格欄位Cell
    static NSString *CellIdentifier = @"CellIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    //設定欄位的內容與類型
    cell.textLabel.text = [roleArray objectAtIndex:indexPath.row];
    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
    return cell;
}

檢視上述程式碼,其中包含一個可以重複利用表格欄位 Cell 的 程式碼區段,它會使用reuse 標籤來查詢目前是否有可用的表格欄位,如果沒有才會去建立新的 Cell 實體,此目的是為了節省記憶體資源的浪費,Table View 不會每次繪製表格欄位時就產生一個新的 Cell 實體,相對的畫面上也放不下過多的表格欄位,當使用者在滑動檢視這些欄位時,其實可以使用滑出畫面的表格欄位來取代滑入畫面的表格欄位。

使用 Master-Detail Application 樣板的讀者,請記得在 Storyboard 上設定 Table View Cell 的 Identifier 標籤供 reuse 來使用,否則編譯器會出現警告提示。

在 Storyboard 中替 Table View Cell 加上 reuse 的標簽


兩個 View Controller 之間的參數傳遞(Detail)
如果你是使用 Master-Detail Application 樣板,那麼到這裡為止應該已經可以繪製出動態的表格項目,並且在點擊項目後可以切換到另一個顯示項目細節的畫面,接下來就是設置項目的細部資訊(圖片或是 Title 等),使每個項目點擊進來之後都可以檢視其細節。你可以想像成在點擊表格欄位並取得該欄位的 Index之後,透過此 Index 從陣列中取得物件(可能只是一個值、也可能是包含許多參數的物件,全看當初陣列的設計),將物件整個傳遞給  DetailViewController class,讓它做分析、配置整個版面。

首先在 MasterViewController class 裡 import DetailViewController.h,方便我們之後透過 segue 使用 DetailViewController class 裡的方法函式。
#import "DetailViewController.h"
接著使下列內建方法函式來幫助我們傳遞參數。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    //利用index取得陣列內的物件
    NSIndexPath *path = [self.tableView indexPathForSelectedRow];
    NSString *roleName = [roleArray objectAtIndex:path.row];

    //使用segue將物件傳給Detail View Controller class
    [segue.destinationViewController setDetailItem:roleName];
}

上述程式碼只有在 Table View Controller(Master)與 View Controller(Detail)之間是透過 segue 做連結時才有效。

最後來到 DetailViewController class 中,編輯方法函式 configureView 來配置你的介面環境,你所需要的資訊剛剛都已經傳至 detailItem 裡,現在,只要利用它就可以完成介面的配置了。
- (void)configureView {
    // Update the user interface for the detail item.
    if (self.detailItem) {

    //設定Navigation Bar的title
    [self setTitle:self.detailItem];

    //設定圖片
    UIImage *roleImage = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png",self.detailItem]];
    [self.roleImage setImage:roleImage];
    }
}



其他的參數傳遞方式
如果你的兩個 View Controller 之間並沒有透過 segue 來做連結,就可以使用這種傳統的方式,同樣你必須先在 MasterViewController class 裡 import DetailViewController.h,接著透過一個 Table View 內建的方法函式 tableView:didSelectRowAtIndexPath:,來完成參數的傳遞。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    //透過標簽取得目標實體
    MLDetailViewController *detailView = [self.storyboard instantiateViewControllerWithIdentifier:@"Detail"];

    //傳遞參數
    [detailView setDetailItem:[roleArray objectAtIndex:indexPath.row]];

    //切換畫面
    [self.navigationController pushViewController:detailView animated:YES];
}

上述程式碼中,由於有透過 Identifier 標籤來與 Storyboard 上的 View Controller 做連結,所以必須回到 Storyboard 上,將 View Controller 的 Identifier 標籤設定成與上述程式碼相同的 Detail 標籤才行。

設置 View Controller 的 Identifier 標籤






74 則留言:

  1. 請問有這個教學的source code 嗎?因為我依照以上的教學來做,xcode沒有紅色或黄色的警告符號, 但模擬器郤不能啓動。所以希望你能給我一份source code參考一下,謝謝。 我的e-mail : uglylook@gmail.com

    回覆刪除
    回覆
    1. Kwai Lam 您好

      稍後會再將實作檔寄給您,不過模擬器不能啟動,可是又沒出現任何的錯誤和警告,表示您的 TARGET 設定上有問題,可能它並未帶出對應的 XIB 或是 STORYBOARD。

      刪除
    2. 收到了你的專案範例,我今晚會好好研究一下。十分感謝!!!
      希望你遲些會推出一些xcode結合web services的教學。

      刪除
  2. 請問 如果不用storyboard是否無法使用navigation bar controller?
    我嘗試右鍵連接table view controller 及navigation bar controller但失敗了
    table view 上並沒有出現navigation bar 謝謝

    回覆刪除
    回覆
    1. Jacky 您好:

      storyboard 可以容納許多的 controller,並且以非常直覺的方式建立他們之間的關係。
      反觀,使用XIB檔案他只能容納一個 controller,如果以上面致個例子來說,你至少需要兩個XIB檔案才能完成。
      如果你是以程式碼的方式自產生controller,可以從APPDelegate檔案下手建立這些controller。

      還是強烈建議您更新新版本的 Xcode 4,畢竟它也改了不少東西。

      刪除
    2. 謝謝你的建議 !
      但因為app已屬半製成品
      所以還是不作太大改動了
      寫下個app我一定會嘗試用storyboard的!謝謝

      刪除
  3. 請問,為什麼我有prepareForSegue的方法,但我沒有setDetailItem這個方法呢?
    是不是哪裡少做了?
    我有在storyboard上用push連接

    謝謝!

    回覆刪除
    回覆
    1. 羊兒 您好:

      如果您是使用 Master-Detail Application 樣板來開啟你的專案,那麼你可以在 DetailViewController.h 中找到 detailItem 物件。
      @property (strong, nonatomic) id detailItem;

      但是,如果您是自己逐步建立 Master-Detail 的專案,它當就不會出現囉。

      刪除
  4. 那請問如果我是用tableview拉到viewController選push,
    可是現在不管點哪個cell都會出現第0個cell的內容
    該怎麼辦?
    我有在didselectRowAtIndex那個方法裡面試圖寫switch(indexPath.row)
    去判斷,但好像沒有進到switch裡@@

    回覆刪除
    回覆
    1. 您好:

      您可以設定中斷點設定在以下程式碼處查看,
      //利用index取得陣列內的物件
      NSIndexPath *path = [self.tableView indexPathForSelectedRow];
      NSString *roleName = [roleArray objectAtIndex:path.row];

      確定你的 path.row 所得到的數值都與所點選的 cell 位置相同。

      如果是沒有進入 switch 表示那個函式根本沒有被呼叫,這點也可以用中斷點做確認。

      刪除
  5. 您好:
    請問有此教學的source code嗎?
    因為我按照以上教學步驟來做,到DetailViewController就卡住了,希望您能給我source code參考一下,謝謝。
    我的e-mail : chanel111085@gmail.com

    回覆刪除
    回覆
    1. 您好:

      我們沒辦法提供整個完整的專案給您,僅能提供整理過後的實作檔給您做參考,因為圖片大多牽涉到版權等問題,這點非常抱歉。

      刪除
  6. 大大你好
    我想依照上面的步驟在第一個地方就卡住了
    使用右鍵拖曳連線的方式,將 Navigation Controller 與 Table View Controller 建立關係(Relationship - RootViewController)
    這邊我怎麼拉都沒看到相關的字樣...
    會不會是我的xcode版本的問題?
    希望能否提供source code參考
    我的e-mail mygodaux@hotmail.com

    回覆刪除
    回覆
    1. 您好:

      我們沒辦法提供整個完整的專案給您,僅能提供整理過後的實作檔給您做參考,因為圖片大多牽涉到版權等問題,這點非常抱歉。

      關於拖曳連線的方式,要在 xcode 4 以上的版本才會出現,因為這是 Storyboard 的功能,如果你是 xcode 3 版本,他只支援 xib 介面檔案的編輯,一次只能顯示一個 controller,另外在拖曳的過程中,如果有遇到問題也可以使用左手邊的皆層狀小圖示來拖曳會比較精準。

      當成功建立連接之後,你可以在 Navigation Controller 物件檢視器中的最右邊那頁找到連結的 UIViewController。

      刪除
  7. 希望能否提供source code參考
    想問的是,每一個row都有不同的圖案,
    例如野蠻人會出現野蠻人的圖案,
    法師會出現法師的圖案,
    什麼program能寫成這樣?

    我的Email: yimken123@yahoo.com.hk

    回覆刪除
    回覆
    1. 匿名者您好:

      我們沒辦法提供整個完整的專案給您,僅能提供整理過後的實作檔給您做參考,因為圖片大多牽涉到版權等問題,這點非常抱歉。

      你可以參考 UITableView 的其它應用來實現您的需求。

      至於您問到什麼 program 能寫成這樣,本站是提供有關 iOS 系統開發的教學網站,它是基於 Objective-C 和 cocoa touch 所開發出來的應用程式,部分應用亦可以使用於 Mac OS X 上,若要轉寫此程式語言可以透過 Xcode 來編譯,當然其它第三方的開發空句也可以適用,但是就不在本站的教學範圍內了。

      刪除
  8. 您好

    我想請問

    如果要同時傳兩個以上的值

    segue可以做嗎?

    回覆刪除
  9. 范凱傑 您好:

    這當然沒有問題,detailItem 是我們在 DetailViewController.h 中所宣告的一項變數,如下:
    @property (strong, nonatomic) id detailItem;

    你可以自行增加變數的種類,例如:
    @property (strong, nonatomic) id detailItem_2;
    @property (strong, nonatomic) id detailItem_3;

    接著在 MLDetailViewController 中你就可以使用 segue 來傳遞數值:
    [segue.destinationViewController setDetailItem_2: myValue];
    [segue.destinationViewController setDetailItem_3: myValue];

    回覆刪除
    回覆
    1. 感謝您的回復!!這網站真的很受用!!

      刪除
  10. 你好 希望你能盡快回復我 謝謝!
    我有一個問題困擾了我多個小時

    為何我的ViewController (用來做Detail) 沒有Identifler 因此我不能做連結

    以下是我的圖

    http://i.imm.io/P4Ks.png

    希望能解決!

    回覆刪除
    回覆
    1. Nouris Wong 您好:

      現在已經沒有 Identifler 這個標籤了,我自己拉新的 UIControllerVIew 也是沒又

      另外使用Identifler可以直接用Title替代

      -------------------------------------------------------------

      在說說你可能遇到的問題,重複呼叫同一個 UIControllerVIew 的instance,這可能是你執行失敗的原因

      其他的參數傳遞方式
      如果你的兩個 View Controller 之間並沒有透過 segue 來做連結,就可以使用這種傳統的方式,同樣你必須先在 MasterViewController class 裡 import DetailViewController.h,接著透過一個 Table View 內建的方法函式 tableView:didSelectRowAtIndexPath:,來完成參數的傳遞。

      「兩個 View Controller 之間並沒有透過 segue 來做連結」,在你給我看的圖片裡面,它已經連接了,所以不需要使用這個方法。

      刪除
    2. 感謝你回復解答, 可是我跟隨你的步驟使用Title 代替 Identifler
      可是問題還是說: doesn't contain a view controller with identifier 'detailView'

      tableView:didSelectRowAtIndexPath:(這個我有的)

      請問furnacedigital@gmail.com 是否能聯絡你? 我想把我的XCODE 文件, 寄給你 查看我的問題。

      刪除
    3. 您好:

      你可以來信到 furnacedigital@gmail.com,我可以寄給您一份乾淨的 simple code...

      刪除
    4. 剛剛忘記說,
      請你確定一下你的「Storyboard ID」是不是也填寫正確,這了欄位在 identity inspector 分頁中

      刪除
    5. 感謝你解決我的問題!! 真的萬分感謝!!

      刪除
  11. 所以希望你能給我一份source code參考一下,謝謝。 我的e-mail : aw998855@yahoo.com.hk

    回覆刪除
    回覆
    1. 您好:

      source code已經mai至您的信箱,請確認!

      刪除
  12. 您好!請問各觀念問題~例如我在tableviewcontroller 做一個相簿列表list ~ 我資料庫用sql 每個相簿內都有數量不等相片~目的希望點選cell時可以秀出照片~我的想法是建立每個相本獨立檔案夾然後在code 裡面寫路徑去抓取image照片~日後我只要把照片丟到資料夾就行~可是如果照我想法是不是就不需要在sql新增照片欄位~~這樣觀念對嗎。

    回覆刪除
    回覆
    1. Bryan Chen 您好:

      其實用不太到 SQLite,你可以考慮使用 plist 這類的東西來幫助你做檔案位置的映射,
      按照您所說的,建立每個相本獨立檔案夾然後在code 裡面寫路徑去抓取image照片,這樣的設計,其實你就已經有帶入資料庫的觀念,資料夾名稱就類似 Table 名稱,裡面檔案的每個屬性就像是不同的欄位。

      不過不管如何,tableviewcontroller 主要還是在做介面上的呈現,你還必須要有一個物件能夠真正存放這些照片的實體,這就要看你如何設計,
      像是你可以大費周章的在一開始就將所有照片載入這個物件,或是當使用者做某些操作時才去動態載入。

      在設計上,我沒辦法給您太多的意見,不過要是我的話,我會先製作console版本,等到能夠正確抓到目標資料夾內檔案的名稱他的屬性,才去考慮製作成有介面的tableviewcontroller,當然其中免不了會自己設計一個帶有 NSMutableArray 的物件來做資料的映射,好讓 tableviewcontroller 直接操作他拿取想要的資料。

      刪除
    2. 感謝您回覆~我試試看一下

      刪除
  13. hi 您好~請問一下在UIImage *roleImage = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png",self.detailItem]];
    [self.roleImage setImage:roleImage]; 我自己有做一個tableview 在裡面cell image 希望能依照title名稱 去抓取一樣名稱的圖片當小圖~~所以就您寫的這邊NSString stringWithFormat:@"%@.png",self.detailItem不是很瞭解~是否能請您就我的code稍作修正~如果可以的話請問一下我要把我的source code mail到哪
    感謝您

    回覆刪除
    回覆
    1. Bryan Chen 你好

      抱歉,我們這邊沒有辦法幫您一一檢閱程式碼,不過如果您有需要還是歡迎你來信到我們的信箱,索取這份專案的原始碼。

      NSString stringWithFormat:@"%@.png",self.detailItem 這一段程式碼是撰寫在 DetailViewController 中,並非 MasterViewController,它門的關係如下
      MasterViewController(UITableViewController)--UIStoryboardSegue-> DetailViewController

      首先使用者會操作 MasterViewController 中的 CELL ,接下來會透過 UIStoryboardSegue 的 destinationViewController 屬性得知所連結的 UIViewController(DetailViewController),在取得 DetailViewController 的實體之後,就可以將參數傳給 DetailViewController(這時候 DetailViewController 實體已經被建立),最後當 DetailViewController ViewDidLoad 時,就可以呼叫你自己自訂的函式來做事情。

      [NSString stringWithFormat:@"%@.png",self.detailItem]
      detailItem 變數中存放的是一個字串,其字串會剛好符合圖片的檔案名稱,這一行的功用只是用來格式化個字串讓他可以變成「檔案名稱.png」

      刪除
  14. 感謝您詳細回覆~再麻煩您將專案原始碼提供給我參考~感謝您無私分享bryan0805@yahoo.com.tw

    回覆刪除
    回覆
    1. Bryan Chen 您好

      原始碼已寄出!

      刪除
    2. 感謝牛奶~你東西正是我要的~~抱歉在請教個問題~我是用sql 當資料庫所以在你的程式碼//資料初始化
      roleArray = [[NSMutableArray alloc] initWithObjects:@"野蠻人", @"法師", @"弓箭手", @"盜賊", @"德魯伊", @"騎士", nil]; 在這部分是不是要更改~我資料庫title 已經有用NSArray *titles; 所以是不是要把你的: @"野蠻人", @"法師", @"弓箭手", @"盜賊", @"德魯伊", @"騎士",取代掉~~我有試了一下還是沒顯示~~請問這樣觀念對嗎?
      感謝您回覆

      刪除
    3. Bryan Chen 您好:

      很高興能幫到您。

      在程式碼中不難發現,我們將 roleArray 宣告成全域的變數,意思就是不管在這個 Class的 任何地方,我們都希望他是唯一的,也就是大家都可以取用相同的變數來操作。(monsterArray、weaponArray、heroicaArray 意思一樣只是這邊沒有使用到)。

      如果你在資料初始化時將roleArray陣列內的資料改變,就會反應在您所有的操作上,像是表格的總數、每個cell中的名字與要傳入DetailViewController的字串等等,在實作上如果也問題你可能需要先設立中斷點,查看roleArray的內容是否正確。

      ps:roleArray就是先前所提的「反應資料庫內容的NSMutableArray」,你必須在程式一開始就將資料庫的內容讀進去,在結束時存回去。

      刪除
    4. 感謝~問題已處理好了^^_^

      刪除
    5. Bryan Chen 您好:

      不客氣唷!

      刪除
    6. hi 牛奶 再請教個觀念~~
      假設我現在要在你的人物 接增加自己的相簿集等於是說點人物進去不只有一張照片是很多照片~我的想法是增加一個viewcontroller 然後加入scrollerview 裡面拉imageview 讓照片可以滑動~~目前如果是把照片加入app內 這目前是OK~~可是如果類別多照片多檔案會大!!所以我想連結到外部相簿~~我自己在想是不是我在外部例如說facebook開相簿然後用webview連結過去~這樣是否可以達到相同相片呈現~而看不出來是抓facebook相簿~感謝您回覆

      刪除
    7. Bryan Chen 您好:

      圖片可以使用網路連結的方式來讀取,
      http://furnacedigital.blogspot.tw/2011/08/url-uiimage.html

      刪除
    8. GOODm( . . )m

      刪除
    9. hi在跟您請教問題~我要在 maintableview 中顯示小圖 一樣依照名稱自行抓圖 ~我想問下我還要在maintableviewcontroller 中新增 detailItem~~還是我可以直接在Maintableview拉UIImage view 去等於 Detailviewcontroller 的UIImage~

      刪除
    10. Bryan Chen 您好

      如果你的圖片全部都是要由網路上下載,你可以嘗試建立 PLIST 檔案,將路徑存放起來要用的時候才去做存取,記住是要用的時候才去做存取,不然就會跟您之前一樣因為載圖而拖慢了執行速度。

      另外,你說的兩個方法都可行,只是要看起怎麼設計,因為你真正得到的並不是圖片本身,應該只是一個陣列的位置,藉由位置參考去得到圖片影像,但是如果你已經將圖片提出來(在兩的 ViewController 之外),使用路徑來做對應,那麼舅不需要把圖片當做參數來傳遞,只要傳遞索引值 index 即可。

      刪除
  15. 請給我原檔參考參考

    回覆刪除
    回覆
    1. vinnykwok 您好:

      請你來信索取喔..

      刪除
  16. 請問有這個教學的source code 嗎?
    因為我依照以上的教學來做,xcode有黄色的警告符號, 但模擬器郤不能啓動。
    所以希望你能給我一份source code參考一下,感激

    另外請問照片如何丟過去
    我的e-mail : c81886542002@yahoo.com.tw

    回覆刪除
    回覆
    1. 您好:

      source code已經mai至您的信箱,請確認!

      照片的部分,我這邊是傳送字串參數過去,在另一個view再去載入圖片。

      刪除
    2. 好的,感謝您的回覆
      另外檔案已經收到
      感激

      刪除
  17. 想要縮取程式碼:
    我的是在
    [self.roleImage setImage:roleImage];

    Propetty 'roleimge not fdund

    郵箱:crosby.huang@gmail.com

    回覆刪除
    回覆
    1. 您好:
      我不是很懂您要什麼,圖片的話有版權,這邊沒有辦法提供給您。

      刪除
  18. 感謝版主的教學,我依照上面的教學打但是還是沒有效果,
    可否給我一份SOURCE CODE?感謝

    MY EMAIL: chiyiplau@gmail.com

    回覆刪除
    回覆
    1. 您好:

      source code已經mail至您的信箱,請確認!

      刪除
    2. 另外我想問,如果想把野蠻人的圖放在野蠻人的一欄,法師圖片放在相對的那一欄,
      有沒有一些REFERENCE CODE?感謝!

      刪除
    3. 您好:
      整個程式在抓取文字或試圖變得部分,全部都是參考 roleArray 這一個陣列,透過 UITableView 動態的取得選取欄位的 index,我們可以反推至 roleArray 得到一個字串,這個字串你可以顯示在畫面上,或是技巧性的讓他當做 png 圖檔的檔案名稱。

      大致上是這樣,你所說的問題可以參考「索引式搜索 Index」頁面中的 UITableView 分類。 Searchinghttp://furnacedigital.blogspot.tw/search/label/C_UITableView

      在改變 UITableView 外觀的方法一文中,我已經有替每個 cell增加他們各自的圖示與主、副標題,原理與上述相同,可以參考看看。

      刪除
  19. 你好,小弟剛學習xcode
    在教學中 rolearray 出現了問題 (issue use of undeclared idenifier 'rolearray'; did you mean '_rolearray'?
    請問這是什麼問題?
    還有可以給我一份source code嗎? cham12hk@gmail.com
    謝謝

    回覆刪除
    回覆
    1. 您好:

      source code已經mail至您的信箱,請確認!

      刪除
  20. 牛奶你好:

    關於cell成員
    我把SQL透過PHP抓到的值存到一個MutableArray
    再把它丟到你的roleArray 卻沒反應

    有辦法在viewdidload時就把資料庫的直顯示出來嗎?

    還有能麻煩你寄一份source code給我嗎?
    我的信箱是:s7227621@gmail.com
    感謝!

    回覆刪除
    回覆
    1. 您好:
      source code 已經寄給您了~
      關於您的問題,是可以做到的,如果沒反應可以先試試看MutableArray是否成功取得db的資料,
      另外table view建立的「時機」是否再資料庫取值之後才實作...

      刪除
  21. 请问,我的uitableviewcontroller和push过后的uiviewcontroller不是Master-Detail Application ,是我自己后面手动加上去的,这样就没有你调用的那个setDetailItem,该怎么传参数呢?

    回覆刪除
    回覆
    1. 自己設定就好了,那只是個變數而已

      刪除
  22. 我寫完但是程式沒有反應誒
    可以給我source code參考嗎?
    如果我的資料量很大
    有辦法只改變label在底圖上嗎?
    我的信箱是ruby023123@gmail.com
    謝謝你!

    回覆刪除
    回覆
    1. 您好:
      source code 已寄至您的信箱!
      可以阿每一個cell都是獨立繪製的。

      刪除
  23. 請問能發送一下這個程式嗎? 最近剛好要用Tableview 一直在分頁處理上有問題... 一夏直跳不過去 一下子跳過去是黑屏 想要參考看看這份程式
    信箱:acer147852369@gmail.com

    回覆刪除
    回覆
    1. 您好 未知
      source code已經mail至您的信箱,請確認!

      刪除
  24. 您好 我最近在學習tableview連節至網頁,但點下去後都沒反應。是否可以參考看看這份程式
    信箱:hsu993@gmail.com

    回覆刪除
    回覆
    1. 您好
      source code已經mail至您的信箱,請確認!

      刪除
  25. 您好 可否跟你參考原始code
    hsiaoan.chou@gmail.com

    Thanks,

    回覆刪除
    回覆
    1. 您好
      source code已經mail至您的信箱,請確認!

      刪除
  26. 牛奶:
    你好
    我依照上面的教學打但是還是有錯,
    可否給我一份SOURCE CODE?
    我的信箱: chichung2001@gmail.com

    回覆刪除
    回覆
    1. Carlos Lam 您好:

      source code已經mail至您的信箱,請確認!

      刪除
  27. 您好
    按照上面的教學一直無法順利執行 可以給我一份原始碼嗎?
    感謝
    我的信箱t323027@gmail.com

    回覆刪除
    回覆
    1. cuba 您好:

      source code已經mail至您的信箱,請確認!

      刪除
  28. 牛奶:
    你好
    我依照上面的教學打但是還是有錯,
    可否給我一份SOURCE CODE?
    我的信箱: huilin34114@gmail.com

    回覆刪除
    回覆
    1. source code已經mail至您的信箱,
      不過版本已經算舊,希望你能順利排除問題!

      刪除