所以我有一個名爲「TopNewsViewController」的ViewController類。它從RootViewController被推送到NavigationController堆棧。使用UIPopOver導航不同的視圖
在TopNewsViewController中,我點擊一個按鈕彈出一個彈出窗口。它顯示來自PopOver的表格視圖。
現在,在PopOver中的tableView:didSelectRowAtIndexPath方法中,我希望它修改TopNewsViewController的某些屬性並將其重新推送到導航堆棧。我採取的方法如下:
TopNewsViewController *topNewsViewController = [[[TopNewsViewController alloc] initWithNibName:@"TopNewsViewController" bundle:nil] autorelease];
NSString *feedStr = [rootViewController.feeds objectAtIndex:rowNumber];
[rootViewController release];
NSArray *thisFeed = [NSArray arrayWithObjects:feedStr, nil];
topNewsViewController.feeds = thisFeed;
topNewsViewController.pageTitle = [categories objectAtIndex:rowNumber];
[self.navigationController pushViewController:topNewsViewController animated:YES];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
我意識到,這並不工作,因爲我使用「self.navigationController」,當酥料餅是不是一個視圖控制器,而是爲一個UITableViewController。我嘗試做「topNewsViewController.navigationController」,而不是它的工作。
任何人有任何建議如何實施它?非常感謝幫助/建議!
哦 - 你是對的。但是,我將如何實現我的RootViewController作爲「委託」?在我的popover視圖控制器中實例化一個RootViewController對象?像這樣:RootViewController * rootViewController = [[RootViewController alloc] initWithNib ....? – darksky 2011-04-14 16:44:57
請參見:[如何在Objective-C中創建委託](http://stackoverflow.com/questions/626898/how-do-i-create-delegates-in-objective-c) – 2011-04-14 16:50:58
所以我在popoverviewcontroller中創建了這個: '@protocol PopOverDelegate @required - (void)didSelectRow:(NSUInteger)row; @ end' and in tableView:didSelectRowAtIndexPath:in the implementation我有: 'NSUInteger rowNumber = [indexPath row]; [[self delegate] didSelectRow:rowNumber]; [tableView deselectRowAtIndexPath:indexPath animated:YES];' 但didSelectRow沒有被調用(做了一些調試)。我是否錯誤地創建協議? –
darksky
2011-04-15 02:12:27