我有一個項目,我並不真正理解後面的視圖和導航。我在AppDelegate
(MAAppDelegate
)開始的,在那裏我定義屬性:不理解NavigationController和UIViewControllers在iOS中的工作方式
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UIViewController *detailViewController;
然後在MAAppDelegate.m
,我創建了一個navigationController
和
@implementation MAAppDelegate
@synthesize detailViewController;
@synthesize window;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Init the navController for the Master Detail View of the grade cells
UINavigationController *navController = [[UINavigationController alloc] init];
detailViewController = [[UIViewController alloc] init];
UIViewController *viewController = [[MAController alloc] init];
navController = [[UINavigationController alloc] initWithRootViewController:viewController];
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
return YES;
}
在這一點上
所以,我想我有一個工作naviationController
,我已經設置了一個自定義UIViewController
(自定義類MAController
)的實例,我已將其設置爲rootViewController
。
然後,在我的MAController
班,在那裏我做所有我的UI東西類(整個UI以編程方式完成,沒有碎粒或故事板)。這是一個有點MAController
的viewDidLoad
的:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self.navigationController setNavigationBarHidden:YES]; // I commented this line out and realized it does nothing
我去(在viewDidLoad
)一堆子視圖添加到self.view
,這樣
[self.view addSubview:self.backgroundImageView];
早些時候,我創造了一個viewController
AppDelegate
類,它被稱爲view
,所以我認爲它是裁判,但現在我已經改變它(在AppDelegate
)viewController
,我想我錯了?
然後終於,我在「viewDidLoad`創建UIView
:
UIView *header = [[UIView alloc] initWithFrame:headerFrame];
header.backgroundColor = [UIColor clearColor];
self.tableView.tableHeaderView = header;
,並開始加入一些子視圖的這一新的UIView我創建header
。
所以,總之,我有不知道發生了什麼事。後來,當我試圖告訴(從方法內部MAController
)self.navigationController
(我認爲是負責一切都在我的項目navigationController
- 在AppDelegate
在開始創建)pushViewController
新viewController
我是要爲使用detailView爲一張桌子,它變得很奇怪。
所以我只是想了解什麼是控制,什麼是rootViewController
,以及正在發生的事情。
了'rootViewController'就是這樣 - 開始(或初始)視圖在您的應用程序控制器。你的第一個問題是,你已經將'viewController'設置爲你的navigationController的初始視圖控制器和你的應用程序的根視圖控制器。你應該設置self.window.rootViewController = navController。或者使用故事板 - 它可以是那些使用IB和那些更喜歡以編程方式創建所有內容的「宗教」東西,但我發現故事板要快得多 – Paulw11
請詳細說明您的意思是「它有多奇怪」。 – Aaron