我正在尝试在Xamarin.IOS中为TableView控件使用可重用的单元格。 我已经在我的故事板上放置了一个表视图。
然后我将Prototype Cells
属性设置为1。
然后我选择了UITableViewCell(在设置Prototype Cells
属性后显示)并为其指定了标识符“MainTableViewCell”。
我期望在运行此程序时查看包含40个项目的填充列表,其值为“表项x”(x是在for循环中设置的i的值)。
但是我在一个包含40个项目的列表中看到了(这是正确的),但TextLabel没有显示任何文本,每个单元格都是空白的。
对DequeueReusableCell
的调用返回非空值,所以我不确定为什么我无法在IOS模拟器中看到标签文本。我看到构建输出中没有错误,所以任何帮助都会受到赞赏。
的ViewController
public partial class ViewController : UIViewController
{
private List<string> _tableItems;
protected ViewController( IntPtr handle ) : base( handle )
{
_tableItems = new List<string>( );
for ( int i = 0; i < 40; i++ )
{
_tableItems.Add( $"Table item {i}" );
}
}
public override void ViewDidLoad( )
{
base.ViewDidLoad( );
MainTableView.Source = new MainTableViewSource( _tableItems );
}
public override void DidReceiveMemoryWarning( )
{
base.DidReceiveMemoryWarning( );
// Release any cached data, images, etc that aren't in use.
}
}
MainTableViewSource
public class MainTableViewSource : UITableViewSource
{
private List<string> _items;
private const string CallIdentifier = "MainTableViewCell";
public MainTableViewSource( params string[ ] items )
{
_items = new List<string>( items );
}
public MainTableViewSource( IEnumerable<string> items )
: this( items.ToArray( ) ) { }
public override UITableViewCell GetCell( UITableView tableView, NSIndexPath indexPath )
{
var cell = tableView.DequeueReusableCell( CallIdentifier );
if ( cell is null )
{
cell = new UITableViewCell( UITableViewCellStyle.Default, CallIdentifier );
}
cell.TextLabel.Text = _items[ indexPath.Row ];
return cell;
}
public override nint RowsInSection( UITableView tableview, nint section ) => _items.Count;
}
答案 0 :(得分:0)
好的想通了。 我没有限制表格,因此单元格标签不在屏幕上。 一旦我约束了桌子,我就能看到细胞标签。