2013-07-03 1 views
2

У меня есть следующие CustomCell:Xamarin MonoTouch CustomCell пустой

using System; 
using System.Drawing; 
using MonoTouch.Foundation; 
using MonoTouch.UIKit; 

namespace Zurfers.Mobile.iOS 
{ 
    public class CustomCell : UITableViewCell 
    { 
     UILabel headingLabel, subheadingLabel, priceLabel; 
     UIImageView imageService; 
     UIImageView star, star2, star3, star4, star5; 
     public CustomCell (NSString cellId) : base (UITableViewCellStyle.Default, cellId) 
     { 
      imageService = new UIImageView(); 
      star = new UIImageView(); 
      star2 = new UIImageView(); 
      star3 = new UIImageView(); 
      star4 = new UIImageView(); 
      star5 = new UIImageView(); 
      headingLabel = new UILabel(){ 
       Font = UIFont.FromName("Cochin-BoldItalic", 22f), 
       TextColor = UIColor.FromRGB (127, 51, 0), 
      }; 
      subheadingLabel = new UILabel(){ 
       Font = UIFont.FromName("Cochin-BoldItalic", 22f), 
       TextColor = UIColor.FromRGB (127, 51, 0), 
      }; 
      priceLabel = new UILabel(){ 
       Font = UIFont.FromName("Cochin-BoldItalic", 22f), 
       TextColor = UIColor.FromRGB (127, 51, 0), 
      }; 
     } 

     public void UpdateCell (string title, string subtitle, string price, UIImage image) 
     { 
      imageService.Image = image; 
      headingLabel.Text = title; 
      subheadingLabel.Text = subtitle; 
      priceLabel.Text = price; 
     } 

     public override void LayoutSubviews() 
     { 
      base.LayoutSubviews(); 
      imageService.Frame = new RectangleF(63, 5, 33, 33); 
      headingLabel.Frame = new RectangleF(5, 4, 63, 25); 
      subheadingLabel.Frame = new RectangleF(100, 18, 100, 20); 
      priceLabel.Frame = new RectangleF(250, 18, 100, 20); 
     } 
    } 
} 

И это мой TableSource:

using System; 
using MonoTouch.Foundation; 
using MonoTouch.UIKit; 

namespace Zurfers.Mobile.iOS 
{ 
    public class HotelTableSource : UITableViewSource 
    { 

     string[] tableItems; 
     NSString cellIdentifier = new NSString("TableCell"); 

     public HotelTableSource (string[] items) 
     { 
      tableItems = items; 
     } 
     public override int RowsInSection (UITableView tableview, int section) 
     { 
      return tableItems.Length; 
     } 

     public override void RowSelected (UITableView tableView, NSIndexPath indexPath) 
     { 
      new UIAlertView("Row Selected", tableItems[indexPath.Row], null, "OK", null).Show(); 
      tableView.DeselectRow (indexPath, true); // normal iOS behaviour is to remove the blue highlight 
     } 

     public override UITableViewCell GetCell (UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath) 
     { 

      CustomCell cell = tableView.DequeueReusableCell(cellIdentifier) as CustomCell; 
      if (cell == null) 
       cell = new CustomCell(cellIdentifier); 
      cell.UpdateCell(tableItems[indexPath.Row], tableItems[indexPath.Row], tableItems[indexPath.Row], 
          UIImage.FromFile (tableItems[indexPath.Row])); 
      return cell; 


     } 
    } 
} 

Но когда я запустить приложение TableView пусто. Каждый элемент CustomCell имеет значение перед созданием TableView.

Что я делаю неправильно?

Заранее за вашу помощь.

ответ

4

Ячейка не только должна содержать элементы управления, они должны быть размещены на ней (или на ней ContentView). Вызов AddSubview для любых элементов управления, которые вы добавляете в пользовательские ячейки:

ImageService = new UIImageView(); 
AddSubview(ImageService); 

Если это не помогает, попробуйте использовать UITableViewCell «s управления по умолчанию (TextLabel, DetailTextLabel, ImageView), чтобы показать некоторые данные , Если появляются данные, в вашем настраиваемом проблема (неправильные фреймы, пустые тексты), если нет, выпуск находится в UITableViewSource (пустые данные).

+0

Спасибо, работает addSubview. – Jean