0
我有一個視圖控制器從Xib加載它的視圖,並且在這個Xib中,我有一些我想要重用的子視圖(例如,在此使用的註釋框觀點和其他觀點)。由於我有一些涉及這個視圖的屬性,這個屬性也必須被更新,所以這是非常棘手的。目前的解決方案,這工作完全正常:用新視圖替換視圖屬性
otherView.frame = currentView.frame;
[currentView removeFromSuperview];
[self setCurrentView:otherView];
[self.view addSubview:otherView];
不過,我需要爲很多類做到這一點,所以我想我只是創建UIViewController的一個類別做這種觀點的交換。
- (void)replaceViewProperty:(NSString *)property withNewView:(UIView *)newView {
SEL propertyMethod = NSSelectorFromString(property);
UIView *currentView = (UIView *) [self performSelector:propertyMethod];
newView.frame = currentView.frame;
[currentView removeFromSuperview];
[self performSelector:propertyMethod withObject:newView];
[self.view addSubview:newView];
}
然而,performSelector:withObject:調用不正確,在這裏,因爲當吸氣的名稱是如mySubView,setter將被setMySubview。顯然,我可以操縱字符串來完成這項任務,但我希望有一種更清晰,更穩定的方式來訪問同一個伊娃的獲取者和設置者。想法?
完美。我之前已經瞭解了這一點,但從未使用它。好吧,現在我會!謝謝! –