我正在爲iPhone應用程序的界面工作。我意識到我有不同的視圖重複對象,所以我想做一個父ViewController。但是現在,當我想從一個子ViewController訪問這個父ViewController的屬性時,我遇到了一些問題。具體而言,我希望在每個視圖中都有一個普通的ProgressView,但是我希望它在View出現時隱藏。當我從子ViewController訪問ProgressView.hidden以獲取ProgressView時,我看不到任何錯誤消息,但在運行的程序中沒有任何反應。如何在Objective-C中正確訪問父類的屬性?
我的代碼看起來是這樣的:
ParentViewController.h:
#import <UIKit/UIKit.h>
@interface ParentViewController : UIViewController{
UIProgressView *progressView;
}
@property (readwrite) UIProgressView *progressView;
@end
ParentViewController.m:
- (void)viewDidLoad
{
CGRect progressViewFrame = CGRectMake(0, 407, 320, 9);
progressView = [[UIProgressView alloc] initWithFrame:progressViewFrame];
progressView.hidden = TRUE;
[self.view addSubview:progressView];
[super viewDidLoad];
}
ChildViewController.h:
#import <UIKit/UIKit.h>
#import "ToolbarViewController.h"
@interface ChildViewController : ParentViewController
@end
ChildViewControlle rm:
- (void)viewDidLoad
{
progressView.hidden = FALSE;
[super viewDidLoad];
}
如果我這樣做ProgressView酒吧保持隱藏,我沒有得到任何錯誤。我還檢查了viewDidLoad方法是否被調用,是的,它被調用。
問候 C4rmel
謝謝!我知道它必須是一點點。 – C4rmel 2012-07-08 17:03:06
我認爲他應該保持它在viewDidLoad或將其移動到loadView。視圖控制器不應該在init上創建視圖。無論如何,子類viewDidLoad可以先調用super。 – 2012-07-08 17:04:50
我同意@ranReloaded。如果他以編程方式創建視圖,則應該在'-viewDidLoad'或'-loadView'中。 – 2012-07-08 17:06:29