Table View 사용 방법

12927 단어 iOSXamarin

TableView


  • Xamarin Studio에서 Story Board 열기
  • Table View Controller를 드래그 앤 드롭하여 추가
  • 추가 된 Table View Controller의 하단 (검은 막대)을 클릭하십시오.
  • [Class] 필드에 클래스 이름 추가
  • 작성한 클래스 파일이 자동 생성된다
  • Table View Controller의 본체 부분을 클릭
  • Name에 C# 코드에서 액세스하는 이름을 설정







  • TableView Source



    TableView에 세트하기 위한 DataSource용의 클래스를 신규 작성한다.
  • 새 클래스에 대한 C# 파일 추가
  • UITableViewSource 클래스의 상속
  • RowsInSection 메서드를 재정의하고 표시 할 항목 수를 반환합니다.
  • GetCell 메서드를 재정의하고 각 셀의 표시 방법을 설정합니다.
  • RowSelected 메서드를 재정의하고 항목이 선택되었을 때의 동작을 설명합니다.

    TableSource.cs
    /// <summary>
    /// Table Source Class
    /// </summary>
    public class TableSource : UITableViewSource
    {
        /// <summary>
        /// Table Item
        /// </summary>
        private string[] TableItems;
    
        /// <summary>
        /// Cell Identifier
        /// </summary>
        private const string CellIdentifier = "TableCell";
    
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="items">Items</param>
        public TableSource(string[] items)
        {
            /* Set Table Items */
            this.TableItems = items;
        }
    
        /// <summary>
        /// Get Row Count In Section
        /// </summary>
        /// <returns>In Section</returns>
        /// <param name="tableview">Table View</param>
        /// <param name="section">Section</param>
        public override nint RowsInSection(UITableView tableview, nint section)
        {
            return TableItems.Length;
        }
    
        /// <summary>
        /// Get Table View Cell
        /// </summary>
        /// <returns>Table View Cell</returns>
        /// <param name="tableView">Table View</param>
        /// <param name="indexPath">Index Path</param>
        public override UITableViewCell GetCell(UITableView tableView, Foundation.NSIndexPath indexPath)
        {
            /* Get Table View Cell(Default : Create new Talbe View Cell) */
            var cell = tableView.DequeueReusableCell(CellIdentifier) ?? new UITableViewCell(UITableViewCellStyle.Value1, CellIdentifier);
            /* Show Disclosure Indicator of Cell */
            cell.Accessory = UITableViewCellAccessory.DisclosureIndicator;
            /* Set Cell label */
            cell.TextLabel.Text = this.TableItems[indexPath.Row];
            /* Get Label Length */
            var len = this.TableItems[indexPath.Row].Length;
            /* Set Cell Detail Label */
            cell.DetailTextLabel.Text = string.Format("{0} items", len);
            /* Set Cell Image */
            cell.ImageView.Image = UIImage.FromFile("Icons/Folder256.png");
    
            return cell;
        }
    
        /// <summary>
        /// Row Selected Event Handler
        /// </summary>
        /// <param name="tableView">Table View</param>
        /// <param name="indexPath">Index Path</param>
        public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
        {
            /* Create Alert View */
            var alert = new UIAlertView("Row Selected", this.TableItems[indexPath.Row], null, "OK", null);
            /* Show Alert View */
            alert.Show();
    
            /* Deselect Row */
            tableView.DeselectRow(indexPath, true);
        }
    }
    

    TableView Controller



    TableView에 설정하는 Data Source를 초기화합니다.
    1. ViewDidLoad 메서드를 재정의합니다.
    2. TableSource 클래스의 인스턴스 생성
    3. TableViewSource 속성에 TableSource 인스턴스 설정

    TableViewController.cs
    /// <summary>
    /// Table View Controller
    /// </summary>
    partial class TableViewController : UITableViewController
    {
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="handle">Handle</param>
        public TableViewController(IntPtr handle) : base(handle)
        {
            /* Nothing to do */
        }
    
        /// <summary>
        /// View Did Load Event Handler
        /// </summary>
        public override void ViewDidLoad()
        {
            /* Base Method */
            base.ViewDidLoad();
    
            /* Create Table View Items */
            var items = new string[] { "Vegetables", "Fruits", "Flower Buds", "Legumes", "Bulbs", "Tubers" };
            /* Create Table View Source */
            var source = new TableSource(items);
            /* Set Table View Source */
            this.Categories.Source = source;
        }
    }
    

    실행 화면



  • 좋은 웹페이지 즐겨찾기