2011-05-18 28 views
1

在View Controller中,我有一個按鈕用於創建包含TableView的popOverCOntroller。當用戶從該tableView中選擇一些內容時,我希望ViewController中的TextField使用來自tableView和popOverCOntroller的文本來填充以顯示ViewController。從彈出窗口中顯示的TableView中的單元格填充textField

popOverCOntroller,ViewController,TableView代碼都可以工作。我無法弄清楚如何讓文本回到原來的ViewController。

謝謝,我知道這是抽象的。有人可以通過我失蹤的步驟來說說我嗎?

埃裏克

回答

1

可以考慮通過引用文本字段,或通過TableViewController的定製init方法一個可變的字符串。

如果您選擇傳遞文本字段,則可以在用戶選擇行並關閉彈出視圖時直接分配值。如果你傳遞一個可變字符串,你可以設置它的值,稍後在popover的委託方法中設置文本字段的值。

讓我知道你是否需要一些代碼去使用它。

編輯

@interface DataViewController : UITableViewController { 
    UIPopoverController *popOverController; 
    UILabel    *labelToUpdate; 
} 

@property (nonatomic, assign) UIPopoverController *popOverController; 
@property (nonatomic, retain) UILabel *labelToUpdate; 

@end 

您將需要存儲一個弱參考UIPopOverController如果您需要以編程方式關閉它。 labelToUpdate是我們要更新的標籤。

@implementation DataViewController 

@synthesize popOverController; 
@synthesize labelToUpdate; 

- (void)dealloc 
{ 
    [labelToUpdate release]; 
    [super dealloc]; 
} 

.... 

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

    self.labelToUpdate.text = event.title; 
    [self.popOverController dismissPopoverAnimated:YES]; 
} 

@end 

在UIPopOverController代表,這將是父視圖控制器,做到這一點 -

// method trigged by button press 
- (IBAction)showChoice { 
    DataViewController *viewController = [[DataViewController alloc] initWithNibName:nil bundle:nil]; 

    UIPopoverController *popOverController = [[UIPopoverController alloc] initWithContentViewController:viewController]; 
    popOverController.delegate = self; 

    viewController.labelToUpdate = self.outputLabel; 
    viewController.popOverController = popOverController; 

    [popOverController presentPopoverFromRect:self.button.frame 
             inView:self.window // Since I did this of the application delegate 
        permittedArrowDirections:UIPopoverArrowDirectionAny 
            animated:YES]; 

} 

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController { 
    [popoverController release]; 
} 
+0

如何駁回didSelectRowAtIndexPath方法方法中的酥料餅?代碼將會非常有用。所選行包含來自核心數據的數據,調用數據event.title – Eric 2011-05-18 17:35:21

+0

我已更新我的答案。 – 2011-05-18 18:15:38

+0

popOverController.delegate = self給我一個錯誤,說它是相互衝突的類型,你認爲這意味着什麼? – Eric 2011-05-18 18:46:01

相關問題