请有人能告诉我为什么这段代码不起作用?我有一个字典,其中包含UIViews,里面的表与键相关联,这些键是相应按钮的名称(有很多)。所以我真正想做的是在相应的按钮点击上更改视图可见性。但问题是Xcode不接受表达式,我得到了预期的标识符错误。
- (IBAction)choosingButtonClicked:(id)sender {
if ([sender currentTitle]) {
[(UIView *)[self.selectionTables objectForKey:[sender currentTitle]]].hidden = ![(UIView *)[self.selectionTables objectForKey:[sender currentTitle]]].isHidden;
}
}
答案 0 :(得分:2)
首先,在充分尊重的情况下,我同意trojanfoe的意见。它没有工作,因为它写得不好。
现在,让我们尝试使用以下代码简化它:
- (IBAction)choosingButtonClicked:(id)sender {
NSString *title = [sender currentTitle];
if (title) {
UIView *selectionView = (UIView *)self.selectionTables[title];
selectionView.hidden = !selectionView.isHidden;
}
}
答案 1 :(得分:2)
你的代码太复杂了,因为即便是作者也无法理解它。如果我们使用局部变量重新编写代码,它将如下所示:
- (IBAction)choosingButtonClicked:(id)sender
{
NSString *title = [sender currentTitle];
if (title)
{
UIView *tempView = (UIView *)[self.selectionTables objectForKey:title];
[tempView].hidden = ![tempView].isHidden;
}
}
如果您现在检查代码,可以看到以下代码导致问题:
[tempView].hidden = ![tempView].isHidden;
更改您的方法,如:
- (IBAction)choosingButtonClicked:(id)sender
{
NSString *title = [sender currentTitle];
if (title)
{
UIView *tempView = (UIView *)[self.selectionTables objectForKey:title];
tempView.hidden = !(tempView.isHidden);
}
}