Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kontrol watchOS WKInterfaceTable jauh lebih sederhana daripada rekan iOS-nya, tetapi melakukan peran serupa. Ini membuat daftar gulir baris yang dapat memiliki tata letak kustom, dan yang merespons peristiwa sentuhan.

Menambahkan Tabel
Seret kontrol Tabel ke dalam adegan. Secara default akan terlihat seperti ini (memperlihatkan satu tata letak baris yang tidak ditentukan):
Beri nama tabel dalam kotak Nama pad Properti, sehingga dapat dirujuk dalam kode.
Menambahkan Pengontrol Baris
Tabel secara otomatis menyertakan satu baris, yang diwakili oleh pengontrol baris yang berisi kontrol Grup secara default.
Untuk mengatur Kelas untuk pengontrol baris, pilih baris di Kerangka Dokumen dan ketik nama kelas di pad Properti :
Setelah kelas untuk pengontrol baris diatur, IDE akan membuat file C# yang sesuai dalam proyek. Seret kontrol (seperti label) ke baris dan beri nama agar dapat dirujuk dalam kode.
Membuat dan Mengisi Baris
SetNumberOfRows membuat kelas pengontrol baris untuk setiap baris, menggunakan Identifier untuk memilih yang benar. Jika Anda memberi pengontrol baris Anda kustom Identifier, ubah default dalam cuplikan kode di bawah ini ke pengidentifikasi yang Anda gunakan. RowControlleruntuk setiap baris dibuat saat SetNumberOfRows dipanggil dan tabel ditampilkan.
myTable.SetNumberOfRows ((nint)rows.Count, "default");
// loads row controller by identifier
Penting
Baris tabel tidak divirtualisasi seperti di iOS. Coba batasi jumlah baris (Apple merekomendasikan kurang dari 20).
Setelah baris dibuat, Anda perlu mengisi setiap sel (seperti GetCell yang akan dilakukan di iOS). Cuplikan kode ini memperbarui label di setiap baris:
for (var i = 0; i < rows.Count; i++) {
var elementRow = (RowController)myTable.GetRowController (i);
elementRow.myRowLabel.SetText (rows [i]);
}
Penting
Menggunakan SetNumberOfRows lalu mengulang menggunakan GetRowController penyebab seluruh tabel dikirim ke jam tangan. Pada tampilan tabel berikutnya, jika Anda perlu menambahkan atau menghapus penggunaan InsertRowsAt baris tertentu dan RemoveRowsAt untuk performa yang lebih baik.
Merespons Ketukan
Anda dapat merespons pemilihan baris dengan dua cara berbeda:
DidSelectRowmenerapkan metode pada pengontrol antarmuka, atau- buat segue di papan cerita dan terapkan
GetContextForSeguejika Anda ingin pemilihan baris membuka adegan lain.
DidSelectRow
Untuk menangani pemilihan baris secara terprogram, terapkan DidSelectRow metode . Untuk membuka adegan baru, gunakan PushController dan teruskan pengidentifikasi adegan dan konteks data yang akan digunakan:
public override void DidSelectRow (WKInterfaceTable table, nint rowIndex)
{
var rowData = rows [(int)rowIndex];
Console.WriteLine ("Row selected:" + rowData);
// if selection should open a new scene
PushController ("secondInterface", rows[(int)rowIndex]);
}
GetContextForSegue
Seret segue di papan cerita dari baris tabel Anda ke adegan lain (tahan tombol Kontrol saat menyeret).
Pastikan untuk memilih segue dan memberinya pengidentifikasi di pad Properti (seperti secondLevel dalam contoh di bawah).
Di pengontrol antarmuka, terapkan GetContextForSegue metode dan kembalikan konteks data yang harus disediakan ke adegan yang disajikan oleh segue.
public override NSObject GetContextForSegue (string segueIdentifier, WKInterfaceTable table, nint rowIndex)
{
if (segueIdentifier == "secondLevel") {
return new NSString (rows[(int)rowIndex]);
}
return null;
}
Data ini diteruskan ke adegan papan cerita target dalam metodenya Awake .
Beberapa Jenis Baris
Secara default kontrol tabel memiliki tipe baris tunggal yang dapat Anda desain. Untuk menambahkan lebih banyak baris 'templat' gunakan kotak Baris di pad Properti untuk membuat lebih banyak pengontrol baris:

Mengatur properti Baris ke 3 akan membuat tempat penampung baris tambahan untuk Anda seret kontrolnya. Untuk setiap baris, atur Nama kelas di pad Properti untuk memastikan kelas pengontrol baris dibuat.

Untuk mengisi tabel dengan tipe baris yang berbeda, gunakan SetRowTypes metode untuk menentukan jenis pengontrol baris yang akan digunakan untuk setiap baris dalam tabel. Gunakan pengidentifikasi baris untuk menentukan pengontrol baris mana yang harus digunakan untuk setiap baris.
Jumlah elemen dalam array ini harus cocok dengan jumlah baris yang Anda harapkan dalam tabel:
myTable.SetRowTypes (new [] {"type1", "default", "default", "type2", "default"});
Saat mengisi tabel dengan beberapa pengontrol baris, Anda harus melacak jenis mana yang Anda harapkan saat mengisi UI:
for (var i = 0; i < rows.Count; i++) {
if (i == 0) {
var elementRow = (Type1RowController)myTable.GetRowController (i);
// populate UI controls
} else if (i == 3) {
var elementRow = (Type2RowController)myTable.GetRowController (i);
// populate UI controls
} else {
var elementRow = (DefaultRowController)myTable.GetRowController (i);
// populate UI controls
}
}
Halaman Detail Vertikal
watchOS 3 memperkenalkan fitur baru untuk tabel: kemampuan untuk menggulir halaman detail yang terkait dengan setiap baris, tanpa harus kembali ke tabel dan memilih baris lain. Layar detail dapat digulir dengan menggesek ke atas dan ke bawah, atau menggunakan Digital Crown.

Penting
Fitur ini saat ini hanya tersedia dengan mengedit papan cerita di Xcode Interface Builder.
Untuk mengaktifkan fitur ini, pilih WKInterfaceTable pada permukaan desain dan centang opsi Paging Detail Vertikal:

Seperti yang dijelaskan oleh Apple , navigasi tabel harus menggunakan segues agar fitur paging berfungsi. Tulis ulang kode yang ada yang menggunakan PushController untuk menggunakan segue sebagai gantinya.
Lampiran: Contoh Kode Pengontrol Baris
IDE akan secara otomatis membuat dua file kode ketika pengontrol baris dibuat di perancang. Kode dalam file yang dihasilkan ini ditunjukkan di bawah ini untuk referensi.
Yang pertama akan diberi nama untuk kelas , misalnya RowController.cs, seperti ini:
using System;
using Foundation;
namespace WatchTablesExtension
{
public partial class RowController : NSObject
{
public RowController ()
{
}
}
}
File .designer.cs lainnya adalah definisi kelas parsial yang berisi outlet dan tindakan yang dibuat pada permukaan perancang, seperti contoh ini dengan satu WKInterfaceLabel kontrol:
using Foundation;
using System;
using System.CodeDom.Compiler;
using UIKit;
namespace WatchTables.OnWatchExtension
{
[Register ("RowController")]
partial class RowController
{
[Outlet]
[GeneratedCode ("iOS Designer", "1.0")]
public WatchKit.WKInterfaceLabel MyLabel { get; set; }
void ReleaseDesignerOutlets ()
{
if (MyLabel != null) {
MyLabel.Dispose ();
MyLabel = null;
}
}
}
}
Outlet dan tindakan yang dideklarasikan di sini kemudian dapat direferensikan dalam kode - namun file .designer.cs TIDAK boleh diedit secara langsung.

