- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为来自 UITableViewSource 的 UITableView 编写一个自定义单元格。我已经实现了 GetHeightForRow 并记录了结果以确保高度正确通过。问题是,我的自定义单元格的框架高度是固定的 44,无论从 GetHeightForRow 返回什么值。副作用当然是我的图层边界不正常,并且 UITableView 切断了我最后一个单元格的底部,并且不允许进一步滚动。
值得一提的是,我尝试在我的单元构造函数逻辑和 GetCell 逻辑中手动更改单元的框架,但对大多数人来说很明显,这并不重要,使用的值总是恢复为 44。
这是我的 UITableViewSource 逻辑如何进行的一个想法:
public override float GetHeightForRow (UITableView tableView, NSIndexPath indexPath)
{
var result = SingleItemCell.GetHeight(_models[indexPath.Row], _width, _isStandalone));
Console.WriteLine(result); //prints various heights, never 44
return result;
}
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
var cell = tableView.DequeueReusableCell(Id) as SingleItemCell ??
(_isStandalone ? new StandaloneItemCell() : new SingleItemCell());
var model = _models[indexPath.Row];
cell.Model = model;
Console.WriteLine(cell.Frame.Height); //always 44
return cell;
}
public SingleOffer(RectangleF frame)
: base(frame) //example new RectangleF(0, 0, 300, 65)
{
//Here, before custom logic, Frame is still 0, 0, 300, 44!
Initialize();
}
最佳答案
我无法重现您的问题。如您所见,关键是UITableViewSource.GetHeightForRow
.以下程序创建预期的输出:
using System;
using System.Collections.Generic;
using System.Linq;
using MonoTouch.Foundation;
using MonoTouch.UIKit;
namespace SingleFileTableViewSolution
{
public class DomainClass
{
static Random rand = new Random (0);
public UIColor Color { get; protected set; }
public float Height { get; protected set; }
static UIColor[] Colors = new UIColor[]
{
UIColor.Red,
UIColor.Green,
UIColor.Blue,
UIColor.Yellow
};
public DomainClass ()
{
Color = Colors[rand.Next(Colors.Length)];
switch(rand.Next(3))
{
case 0 :
Height = 24.0f;
break;
case 1 :
Height = 44.0f;
break;
case 2 :
Height = 64.0f;
break;
default:
throw new ArgumentOutOfRangeException();
}
}
}
//Table Source
public class ColorTableDataSource : UITableViewSource
{
List<DomainClass> Model { get; set; }
public ColorTableDataSource(List<DomainClass> model)
{
this.Model = model;
}
public override int RowsInSection(UITableView tableView, int section)
{
return Model.Count;
}
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
var cell = tableView.DequeueReusableCell(ColoredTableCell.ID);
if(cell == null)
{
cell = new ColoredTableCell();
}
cell.ContentView.BackgroundColor = Model[indexPath.Row].Color;
return cell;
}
public override float GetHeightForRow(UITableView tableView, NSIndexPath indexPath)
{
var height = Model[indexPath.Row].Height;
return height;
}
}
public class ColoredTableCell : UITableViewCell
{
public static readonly string ID = "ColoredTableCell";
public ColoredTableCell ()
{
}
}
public class ColorTableController : UITableViewController
{
String title;
public ColorTableController (String title, UITableViewSource source) : base ()
{
this.title = title;
this.TableView.Source = source;
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
Title = title;
}
}
[Register ("AppDelegate")]
public class AppDelegate : UIApplicationDelegate
{
UIWindow window;
ColorTableController viewController;
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
var models = new List<DomainClass>();
for(int i = 0; i < 20; i++)
{
models.Add(new DomainClass());
}
var tableController = new ColorTableController("My Table", new ColorTableDataSource(models));
window = new UIWindow (UIScreen.MainScreen.Bounds);
window.RootViewController = tableController;
window.MakeKeyAndVisible ();
return true;
}
}
public class Application
{
static void Main (string[] args)
{
UIApplication.Main (args, null, "AppDelegate");
}
}
}
关于ios - UITableViewSource 单元格高度始终为 44 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749301/
我正在使用 MvvmCross 编写 Xamarin.iOS 应用程序。我正在尝试制作一个表格,我可以看到绑定(bind)到源中的项目,但我从未看到任何单元格被创建。函数GetOrCreateCell
我正在为来自 UITableViewSource 的 UITableView 编写一个自定义单元格。我已经实现了 GetHeightForRow 并记录了结果以确保高度正确通过。问题是,我的自定义单元
我一直在尝试通过组合多个 UITableView 来实现多 ListView 。 我遇到的一个问题是,当我在多列 View 中的一个 TableView 上选择一行时,我无法覆盖要调用的 RowSel
如何访问 UITableviewSource 类中的 NavigationController? 在行选择时,我想导航到另一个 UIController。 这是我的代码, public class R
我有用于 UISearchDisplayController 的 UITableViewSource 类。在我的主 TableView 中,我有一个工作正常的自定义单元格。现在我想将自定义单元格也用于
我有一个非常简单的应用程序,它只包含 UITableView 及其 UITableViewSource.. 在不链接到 UITableViewSource 的情况下使用 UITableView 时(该
当我从 UITableViewSource 中单击 RowSelected 时,我想打开 View Controller 我在打开 UIViewController 时使用这段代码 如有任何帮助,我们
我记得在 MonoTouch 中有必要(现在仍然是?)保留对 UITableViewSource.GetCell() 返回的 UITableViewCells 的显式引用,以避免收集托管单元格.关于这
所以我构建了一个表格 ListView ,就像 Laurent Bugnion 的鲜花示例一样,一切正常。但是当我想使用编辑(通过滑动删除等)功能时该怎么办。 如何使用自定义 uitableviews
我是一名优秀的程序员,十分优秀!