我实际上写了一个切换一些UIViews的方法。当我输入方法时,我必须知道哪个是我当前的视图,以从superview中删除这一个。我在头文件中为此目的声明了一个属性:
@property (weak, nonatomic) UIView *currentView;
在我的方法中更改为某个视图后,我想将此视图分配给属性,以便在我再次输入方法时使用它,并在请求时从superview中删除此视图。该方法如下所示:
...
nextView = [self loadNextView]; // the view is loaded from a NIB here
if (self)
{
[self viewWillDisappear:YES];
[[self currentView] removeFromSuperview];
[[self view] addSubview:nextView];
[self currentView] = [self nextView];
...
不幸的是编译器告诉我currentView在这里不可分配。还有另一种,希望更好的方式来记住我目的的治愈观点,还是应该采用完全不同的方式?
答案 0 :(得分:0)
您无法分配函数或方法调用的值(它返回一个右值)。您必须使用属性访问器语法:
self.currentView = [self nextView];
或显式调用setter:
[self setCurrentView:[self nextView]];
答案 1 :(得分:0)
试试这个
替换
[self currentView] = [self nextView];
与
self.currentView = [self nextView];
答案 2 :(得分:0)
而不是以下行,
[self currentView] = [self nextView];
执行以下操作:
[self setCurrentView:[self nextView]];