1

我已经初始化了一个 QLabelElement,然后想更新它的值。但是,在 QLabelElement 实例上显式设置 .value 属性不会更新其值。这是我正在尝试做的一个片段。onSelected 委托在按下 sayHello 按钮时执行,但标签元素没有更新:

@implementation 我的控制器
{
    QLabelElement *_theLabel;
}

- (id)初始化
{
    self = [超级初始化];
    QRootElement *root = [[QRootElement alloc] init];
    QSection *section = [[QSection alloc] init];
    _theLabel = [[QLabelElement alloc] initWithTitle:@"标签"值:@""];
    QSection *sectionButton = [[QSection alloc] init];
    QButtonElement *sayHello = [[QButtonElement alloc] initWithTitle:@"Say Hello"];

    [添加到根目录的部分和控件等]

    sayHello.onSelected = ^{
        _theLabel.value = @"你好已经说过"; //<-- 这不起作用
    };

    //设置 _theLabel.value = @"Hello has been said" 在这里有效,但在委托中无效

    self.root = 根;

    回归自我;
}
4

2 回答 2

2

您需要在加载后重新加载该元素的单元格。另外,要小心保留循环,使用弱变量:

__weak QLabelElement *weakLabel = _theLabel;
sayHello.onSelected = ^{
    weakLabel.value = @"Hello has been said"; //<-- this isn't working
   [self.quickDialogTableView reloadCellForElements:weakLabel, nil];
};

QD 有一个分支可以自动解决这个问题,但它肯定还没有准备好使用。

于 2013-04-05T14:19:04.473 回答
1

我不相信 onSelected 事件实现会重新加载屏幕上呈现的数据。有几种方法可以呈现更新:

1) 重新加载整个 UITableView

- (void)reloadData

Apple Doc - reloadData

2)如果您知道索引路径,请重新加载数据

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

Apple Doc - reloadRowsAtIndexPaths!

于 2013-04-05T01:05:59.000 回答