Swift UI專項訓練7 資料新增

2021-09-21 16:54:03 字數 1538 閱讀 4809

上一話我們使用了自己定義的控制器之後發現tableview上的餐館沒有了,這一話我們來新增資料,新新增乙個餐館類,這個類我們不需要繼承系統的類,直接新增乙個swift檔案就好

我簡單建乙個類,分別代表餐館名字、餐館位置和餐館評分,它們都有預設值。

然後我們回到餐館排行的控制器中新建乙個餐館的陣列。

var restaurantlist = [restaurant]()
之後新增乙個方法來初始化資料。

func loadinitdata()
之後在viewdidload中呼叫一下就好了。但是現在我們執行會發現**中依然空空如也,這是為什麼呢?原來是我們並沒有使用委託,我們需要把更新的**內容委託給控制器。由於我們是子**,所以需要過載控制器的很多方法,這些方法在我們的控制器**中已經寫好了我們只需要按住自己的需求去做修改,比如下面這個方法:

override func numberofsectionsintableview(tableview: uitableview) -> int
這個方法規定了**的區塊,有的**比較複雜可能不止乙個區域,我們返回1代表只有乙個區塊。

override func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int
上面的方法用來規定**的行數,我們返回的是陣列的元素個數,有很多設定方法名都是tableview,但是引數不同,大家選擇自己需要的。通常單元格的每一行的格式都是相同的,所以我們需要設乙個預設格式來重用,開啟storyboard,選擇某一table view cell然後設定identifier,命名為pcell。底下的selection是選中樣式,有以下幾種:

這個是選中後會有什麼顏色,我們選擇none。回到**中:

override func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell
這個方法的作用是重用我們剛才設定的預設格式。現在我們對cell格式和內容的操作都在上面這個方法中進行就好了。增加一行:

cell.textlabel?.text = restaurantlist[indexpath.row].name//行數
執行效果:

Swift UI專項訓練2 本地化及自動布局

首先我們新建乙個工程,然後來做本地化,本地化就是根據使用者設定的語言等等資訊來顯示。那麼如何來設定呢,開啟我們的工程,點開supporting files中的info.plist。如圖 右側第一欄選中china,這樣如果遇到一些系統元件,那麼會自動變成中文的。自動布局就是我的文字框根據裝置尺寸自動調...

C 專項訓練 1

1 which of the following calling convention s support s support variable length parameter e.g.printf a a cdecl c語言的預設呼叫約定,允許函式的引數的個數是不固定的 b stdcall c ...

專項訓練之列舉

codevs3291 記數問題 2013年noip全國聯賽普及組 時間限制 1 s 空間限制 128000 kb 題目等級 gold 試計算在區間1到n的所有整數中,數字x 0 x 9 共出現了多少次?例如,在1到11中,即在1 2 3 4 5 6 7 8 9 10 11中,數字1出現了4次。輸入描...