2010-08-17 76 views
0

所以我想簡單的橫向到表格視圖中的一個新的水平做這個:的TableView幫助推自定義視圖

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
if (indexPath.row == 1) { 
     FiltersController *aFiltersCont = [[FiltersController alloc] init]; 
     aFiltersCont.displayedFilters = [appDelegate.groupedBusiness allKeys]; 
     aFiltersCont.currentLevel = self.currentLevel + 1; 
     [self.navigationController pushViewController:self animated:YES]; 
    } 
} 

沒有任何理由爲什麼這會不會推控制器?我之前有類似的問題,但通過模態顯示視圖來解決它。但是,這一次,這是一個彈出窗口,需要滑動到彈出窗口中的下一個屏幕。有任何想法嗎?提前致謝。

OK,我要多放一些源在這裏嘗試和幫助.​​.....

裏面的主視圖控制器我有這樣的代碼從一個按鈕,使酥料餅:

// Create and configure the filters controller. 
FiltersController *aFiltersController = [[FiltersController alloc] initWithStyle:UITableViewStylePlain]; 
self.filtersController = aFiltersController; 
filtersController.appDelegate = self.appDelegate; 



UINavigationController *filtersNavController = [[UINavigationController alloc] initWithRootViewController:filtersController]; 


UIPopoverController *filtersPopover = [[UIPopoverController alloc]  initWithContentViewController:filtersNavController]; 
self.filtersPopoverController = filtersPopover; 
filtersPopoverController.delegate = self; 

然後我得到我在我的filtersController類中首次發佈的代碼。這些幫助有用?

+1

幫助我們,並在視圖中試圖推動在ViewDidAppear方法中添加NSLog語句並查看它是否到達那裏。也做一個NSLog的indexPath.row,讓我們看看是什麼。只是拋出它的情況下,導致您的表中的第一行是不是在indexpath.row = 1,但在indexpath.row = 0 – 2010-08-17 19:51:39

+0

好吧,索引路徑是好的。這不是問題。我正在瀏覽文件,至於viewDidAppear,你的意思是看法會出現嗎?因爲它確實到達那裏,但我沒有看到確實出現過的方法...... – gabaum10 2010-08-18 14:55:34

+0

好吧,我已經取得了一些突破。我得到它推動新的觀點。顯然問題在於我的filtersController類不知道mainView類中的導航控制器。現在我只需要讓它顯示正確的信息。我會及時向大家發佈。 – gabaum10 2010-08-18 15:37:06

回答

0

如果你只是顯示你的UITableViewControllerUIPopoverController之內,將不會自動爲你創建。你可能需要修改你創建UIPopoverController的代碼,如下所示:

MyTableViewController *table = [[[MYTableViewController alloc] init] autorelease]; 
UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:table] autorelease]; 
myPopover = [[UIPopoverController alloc] initWithContentViewController:nav]; 

然後,你應該能夠推動和彈出導航控制器在堆棧上沒有問題。

+0

那麼我正在創建一個導航控制器,這就是爲什麼這是如此令人困惑。遵循我所見到的所有邏輯,我所擁有的應該起作用。我真的很茫然...... – gabaum10 2010-08-18 14:49:52

0

您正在推送self這是對當前視圖控制器的引用。如果aFiltersCont是您嘗試鑽取的viewController,則應該將該行更改爲以下內容。

[self.navigationController pushViewController:aFiltersCont animated:YES]; 
1
[self.navigationController pushViewController:self animated:YES]; 

應該

[self.navigationController pushViewController:aFiltersCont animated:YES]; 
+0

是的,我發佈這個後,我確實發現了這一點。這不是問題,你有什麼其他的想法嗎? – gabaum10 2010-08-17 19:25:44

+0

@ gabaum10:檢查'self.navigationController'不是零,並且'aFiltersCont'不是零。 – jtbandes 2010-08-17 20:00:22

+0

他們不是零。 – gabaum10 2010-08-18 15:21:11

0

你可能會感到困惑的指數。第一個索引是0而不是1,所以也許你想要indexPath.row == 0

此外,你應該在返回前釋放aFiltersCont(你滲出FiltersController和任何它擁有每次運行這個方法的時間。

所以也許這?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
if (indexPath.row == 0) { 
     FiltersController *aFiltersCont = [[[FiltersController alloc] init] autorelease]; 
     aFiltersCont.displayedFilters = [appDelegate.groupedBusiness allKeys]; 
     aFiltersCont.currentLevel = self.currentLevel + 1; 
     [self.navigationController pushViewController:aFiltersCont animated:YES]; 
    } 
} 
+0

這一行在這一點上並不重要。一旦觀點推進,這將會產生更大的影響。這正是我現在所擁有的。 – gabaum10 2010-08-17 20:03:35