2012-05-04 23 views
8

Tôi yêu MonoTouch cho đến nay, nhưng tìm tài liệu và mẫu thiếu một khi bạn vượt qua vài bài học mới bắt đầu.Populating một UITableView đơn giản trong MonoTouch với UITableViewDataSource - cách sử dụng UITableViewDataSource

Tôi đang vật lộn với một khái niệm đơn giản về việc điền một UITableView đơn giản vào MonoTouch. Tôi đã thấy các ví dụ về việc làm điều này với các tế bào tùy chỉnh, và tùy biến rộng rãi danh sách với các thông tin khác nhau, nhưng tôi chỉ tìm kiếm tối thiểu về cách đạt được điều đơn giản này. Tôi là một nhà phát triển .NET chuyên nghiệp và rất mới đối với iOS, vì vậy tôi vẫn gói gọn đầu của tôi về cách hoạt động của nó.

Tôi chỉ muốn những điều sau đây. Tạo danh sách các mục Chỉ định danh sách các mục đó cho UITableView để cho phép người dùng cuộn danh sách. Tìm kiếm một ví dụ rất đơn giản.

Điều lớn nhất mà tôi đang gặp phải là tạo đối tượng UITableViewDataSource. Nó trừu tượng nên tôi không thể tạo ra một thể hiện của nó. Tôi có thể tạo ra lớp của riêng tôi thừa hưởng nó, nhưng tôi đang tìm kiếm một triển khai cụ thể trong khuôn khổ để sử dụng mà không cần phải tạo của riêng tôi. Tôi quá hư hỏng bởi .NET và phải tạo một lớp mới cho nó, hay nó tồn tại ở đâu đó trong Framework và tôi không thể tìm thấy nó?

[trả lời ở đây] Tôi tìm thấy một câu trả lời, nhưng StackOverflow sẽ không cho phép tôi trả lời câu hỏi của riêng tôi với ít hơn 100 danh tiếng hoặc trừ khi tôi chờ đợi 8 giờ mà tôi không sẵn sàng làm. Trả lời dưới đây:

Tôi đã tạo lớp sau kế thừa UITableViewSource. Đó là một yêu cầu để làm điều đó theo cách này. GetCell kiểm soát cách bạn sẽ hiển thị ô trên bảng.

Tạo một trường hợp này và chuyển vào danh sách các chuỗi để điền.

Ví dụ này đến từ (tôi sửa đổi nó một chút) cuốn sách tôi đang đọc từ Wrox Press - "Lập trình iPhone chuyên nghiệp với MonoTouch và .NET C#"

public class TableViewSource : UITableViewSource 
{ 
    private List<string> rows; 

    public TableViewSource (List<string> list) 
    { 
      rows = list; 
    } 

    public override int RowsInSection (UITableView tableview, int section) 
    { 
     return rows.Count; 
    } 

    public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) 
    { 
     UITableViewCell cell = new UITableViewCell(UITableViewCellStyle.Default,"mycell"); 
     cell.TextLabel.Text = rows[indexPath.Row]; 
     return cell; 
    } 
} 

Đặt đoạn mã sau trong viewDidLoad trên màn hình của bạn .

var list = new List<String>() 
{ 
    "San Francisco",  
    "Buenos Aires", 
    "São Paulo" 
}; 

TableViewSource tableData = new TableViewSource(list); 
this.tblTrips.Source = tableData; 

này mang lại cho tôi những gì tôi đang tìm kiếm mà không đòi hỏi một lặn sâu vào MonoTouch.Dialog

Trả lời

2

UITableView, và liên quan đến đại biểu và nguồn dữ liệu các loại, không phải là một API rất thân thiện - thậm chí ít hơn cho các điển hình. NET phát triển. Có những lúc cần thiết nhưng trong hầu hết các trường hợp, bạn sẽ muốn sử dụng một cái gì đó đơn giản hơn.

Tạo danh sách các mục Chỉ định danh sách các mục đó cho UITableView để cho phép người dùng cuộn danh sách. Tìm kiếm một ví dụ rất đơn giản.

Điều đó có vẻ phù hợp với mục tiêu của MonoTouch.Dialog. Việc lắp ráp bây giờ được vận chuyển với MonoTouch nhưng bạn có thể tìm thấy sample source code trên github.

trang web tài liệu của Xamarin cũng có tutorial để sử dụng MonoTouch.Dialog và một số video cũng có sẵn.

+0

Tôi đánh giá cao lời khuyên và tôi sẽ có khả năng xem xét điều này trong tương lai.Nhưng, để công bằng, tôi đang tìm cách sử dụng các đối tượng hiện có trong mono và tôi đã tìm thấy một ví dụ cho phép tôi làm điều đó trong một cuốn sách tôi đang đọc. Xem câu trả lời của tôi dưới đây. Bây giờ tôi đã hiểu cách nó hoạt động và cách sử dụng GetCell để kết xuất ô và rằng nó được yêu cầu để tạo ra thực hiện của riêng tôi về UITableViewSource, tôi nghĩ rằng tôi đang trên con đường của mình để hiểu rõ điều này. – user1060500

+1

MT.Dialog là một công cụ tuyệt vời, nhưng tôi đồng ý rằng bạn thực sự cần hiểu cách sử dụng TableViews nguyên bản - chúng là một phần khá cốt lõi của giao diện người dùng iOS. Tôi ngạc nhiên rằng Xamarin không có một mẫu tốt để làm điều này trong thư viện doc của họ. – Jason

+0

Vì tôi không thể trả lời câu hỏi của riêng mình với ít hơn 100 danh tiếng nên câu hỏi này sẽ không được trả lời. Nó quá tệ vì câu trả lời của tôi sẽ giúp ích cho cộng đồng. Tôi sẽ quên để trả lời nó trong 8 giờ khi tôi đủ điều kiện để làm như vậy theo quy tắc StackOverflow. [Tôi mạnh mẽ không đồng ý với quy tắc này] - Tôi sẽ đăng câu trả lời như một phần của câu hỏi để giải quyết vấn đề này ... – user1060500

Các vấn đề liên quan