从主ViewController类更改单独.xib中的标签文本

时间:2013-01-05 02:12:34

标签: iphone objective-c ios xcode

我所拥有的是在单独的.xib中创建的自定义表格单元格。有了它,我有一个Objective-C类。我将自定义单元格中的标签连接到自定义单元格的类。

在我的主.xib中,我添加了自定义单元格TableView。填充的代码在主类(ViewController.m)中。

那么如何从主类(ViewController.m)更改自定义单元格中的label

当用户点击自定义单元格时,会显示一个对话框,并根据对话框中选择的按钮更改自定义单元格中label的文本。

4 个答案:

答案 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开发,因为我讨厌它,哈哈,

无论如何,谢谢你们这么快回复。