我所拥有的是在单独的.xib
中创建的自定义表格单元格。有了它,我有一个Objective-C类。我将自定义单元格中的标签连接到自定义单元格的类。
在我的主.xib中,我添加了自定义单元格TableView
。填充的代码在主类(ViewController.m)中。
那么如何从主类(ViewController.m)更改自定义单元格中的label
?
当用户点击自定义单元格时,会显示一个对话框,并根据对话框中选择的按钮更改自定义单元格中label
的文本。
答案 0 :(得分:2)
由于它是一个表格单元格,我假设您在表格视图中使用它。你通常是通过
来做的- (UITableViewCell *)UITableView:(UITableView *) cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"myCustomCell";
MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:self options:nil];
for (id anObject in nib) {
if ([anObject isKindOfClass:[MyCustomCell class]]) {
cell = (MyCustomCell *)anObject;
}
}
}
cell.myLabel.text = @"Some Text"; // This will set myLabel text to "Some Text"
return cell;
}
答案 1 :(得分:1)
您必须为标签分配标签,即“接口”构建器中的99。 然后,在ViewController.m中,当你加载单元格时,加载xib之后就可以了
UILabel *label = [cell viewWithTag: 99];
label.text = @"Some text here... (:";
那就行了! :)
答案 2 :(得分:1)
非常简单:
首先在自定义单元格中创建标签的属性
Customcell.h
@interface CustomCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UILabel *yourLabel;
现在在TableViewController中创建customcell实例
YourTableViewController.h
@interface YourTableViewController : UITableViewController<
{
CustomCell *cell;
}
并在YourTableViewController.m
中- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:nil];
if (cell == nil)
{
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
for (id currentObject in topLevelObjects){
if ([currentObject isKindOfClass:[UITableViewCell class]]){
cell = (CustomCell *) currentObject;
break;
}
}
}
cell.yourLabel.text = @"whatever you want to add";
现在,如果你想用其他方法更新customcell的标签而不是这样做。
-(void)someMethod()
{
CustomCell *acell = (CustomCell *)[tableView cellForRowAtIndexPath:n];
acell.yourLabel.text = @"whatever you want to add.";
}
答案 3 :(得分:0)
我想出了一个不同的方法,目前我已停止iOS开发,因为我讨厌它,哈哈,
无论如何,谢谢你们这么快回复。