gpt4 book ai didi

iphone - 如何用不同的 UITextField 覆盖 UITextField

转载 作者:搜寻专家 更新时间:2023-10-30 20:26:27 24 4
gpt4 key购买 nike

我在 xib 中定义了一个 UITableViewCell。这个 UITableViewCell 有一个 UITextField,叫做 itemText。此 UITableViewCell 也采用其他格式。

在表格中的所有单元格中,我想要 xib 中定义的 UITextField。

但是,在一个单元格中我想使用不同的 UITextField,我以编程方式定义它,称为 FinanceTextField。

在 cellforindexpath 方法中,我使用了以下行:

cell.itemText  = [[[FinanceTextField alloc] initWithFrame:CGRectMake(0, 0, 300, 50)] autorelease];

没用?为什么?

最佳答案

创建两个 UITableViewCell 类。一个用于您的常规 View ,一个具有 FinanceTextField。从 xibs 加载它们。在您的 cellForIndexPath 中,确定您要使用哪个单元格,然后加载(并重用)适当的类型。即使只有一个单元格使用不同的单元格,它也会全部工作。事实上,您可以在同一个表格中包含所有不同类型的单元格,所有行列式都在行中,例如第一行带有常规标签文本,第二行带有文本字段,第三行带有按钮,等等。

您可以查看一个示例项目来执行此操作。苹果开发者网站上的“食谱”示例。以下是您可能感兴趣的部分代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = nil;

// For the Ingredients section, if necessary create a new cell and configure it with an additional label for the amount. Give the cell a different identifier from that used for cells in other sections so that it can be dequeued separately.
if (indexPath.section == INGREDIENTS_SECTION) {
NSUInteger ingredientCount = [recipe.ingredients count];
NSInteger row = indexPath.row;

if (indexPath.row < ingredientCount) {
// If the row is an ingredient, configure the cell to show the ingredient name and amount.
static NSString *IngredientsCellIdentifier = @"IngredientsCell";
cell = [tableView dequeueReusableCellWithIdentifier:IngredientsCellIdentifier];
if (cell == nil) {
// Create a cell to display an ingredient.
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:IngredientsCellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryNone;
}
Ingredient *ingredient = [ingredients objectAtIndex:row];
cell.textLabel.text = ingredient.name;
cell.detailTextLabel.text = ingredient.amount;
} else {
// If the row is not an ingredient the it's supposed to add an ingredient
static NSString *AddIngredientCellIdentifier = @"AddIngredientCell";
cell = [tableView dequeueReusableCellWithIdentifier:AddIngredientCellIdentifier];
if (cell == nil) {
// Create a cell to display "Add Ingredient".
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:AddIngredientCellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
cell.textLabel.text = @"Add Ingredient";
}

这只是展示如何创建不同标识符的项目的一部分。从这里你可以自己得到它......

关于iphone - 如何用不同的 UITextField 覆盖 UITextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8283317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com