2012-11-27 66 views
2

我試圖加載特定的UITableViewController作爲UISplitViewController的細節視圖,當用戶在主視圖中選擇一個單元時;但有一些問題。當我選擇單元格時,它只是顯示一個空表窗口與一個表視圖控制器。UISplitViewController中的UITableViewController

但是,如果我改變應用程序代理只加載UITableView控制器不使用它工作正常的UISplitViewController,所以我知道這是用我編寫的UISplitViewController.

視圖層次結構的方式有問題:

UISplitViewController 
--> 
    UINavigationController 
    --> UITableViewController (DetailViewController) 

    UINavigationController 
    --> UIViewController (ColorViewController) 

用戶在ColorViewController選擇小區和應該改變DetailViewController.

我ñAppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

{ 

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 

self.viewController = [[ViewController alloc] init]; 

self.window.rootViewController = [self.viewController splitViewController]; 

[self.window makeKeyAndVisible]; 

return YES; 

} 

ViewController.m

- (UIViewController *) splitViewController { 

// Create the navigation-run root view 
ColorViewController *rootVC = [ColorViewController controller]; 

UINavigationController *rootNav = [[UINavigationController alloc] initWithRootViewController:rootVC]; 

// Create the navigation-run detail view 
DetailViewController *detailVC = [DetailViewController controller]; 

UINavigationController *detailNav = [[UINavigationController alloc] initWithRootViewController:detailVC]; 

// Add both to the split view controller 
svc = [[UISplitViewController alloc] init]; 

svc.viewControllers = [NSArray arrayWithObjects: rootNav, detailNav, nil]; 

svc.delegate = detailVC; 

return svc; 

} 

ColorViewController.m

@interface ColorViewController : UITableViewController 

...  

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

UIViewController *controller = (UIViewController *)self.splitViewController.delegate; 

TableViewController *tvc = [[TableViewController alloc] init]; 

[controller.view addSubview:tvc.view]; 

} 

什麼改變UISplitViewController中的詳細信息視圖的最好方法?我是否應該像上面那樣將替換視圖添加到UIViewController或者有更好的方法嗎?也許這是我的問題的原因?

回答

0

我要回答我的問題..

出於某種原因,在主視圖(ColorViewController),細節對象TableViewController *tvc需要被聲明爲一個實例變量,而不是內部的一個變量方法。

這樣做後,它工作並正確顯示錶。

我不明白爲什麼,但如果有人想嘗試解釋。

乾杯,

0

由於您有一個導航控制器處理拆分視圖的詳細信息,所以您的策略應該是使用它來推送新的表視圖控制器。當我這樣做時,我已經將兩個導航控制器的引用保留爲應用程序委託中的屬性,以便我可以使用其中一個或另一個來執行推送操作。

我不知道你的ViewController類的真正目的是什麼,但如果移動的splitViewController方法到應用程序委託它會更容易改變從局部變量導航控制器性能在一個地方,他們可以輕鬆訪問。

+0

謝謝...我會盡力做到這一點。我認爲這可能有助於解決問題。 – Imme22009

相關問題