2013-10-22 28 views
2

我有一個初始的ViewController,我們稱之爲HomeViewController,它有一個調用模態視圖控制器的按鈕,可以稱它爲ModalViewController。在那個ModalViewController裏面我有兩個部分的表格視圖。如果您單擊第0部分中的任何單元格,則會將信息發送回HomeViewController(這部分我已使用協議)。如果您點擊第1部分中的任何單元格,則會將其推送到具有選項的另一個視圖控制器,我們可以將其稱爲OptionsViewController。這裏對我來說很棘手。如果您點擊其中的任何選項,請關閉OptionsViewController並關閉ModalViewcontroller,並將該信息發送到HomeViewController,就像ModalViewControllerHomeViewController一樣。我試圖建立一個類似於ModalViewController中的協議,但它永遠不會被調用。使用模態視圖控制器設置協議 - > ViewController

OptionsViewController協議& .h文件中

@protocol OptionsViewControllerDelegate <NSObject> 
@optional 
-(void) optionsInfo:(NSArray *)optionsViewArray; 

@end 

@interface OptionsViewController : UITableViewController 
@property (retain) id delegate; 
@property (nonatomic, strong) NSArray *sendArray; 
@end 

OptionsViewController.m那裏它被稱爲彈出堆棧。

{ 
    [self dismissOptionsView]; 
} 
-(void) viewWillDisappear:(BOOL)animated 
{ 
    NSLog(@"Send Array: %@", self.sendArray); 
    [[self delegate] optionsInfo:sendArray]; 
} 
-(void)dismissOptionsView 
{ 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

內ModalViewController.h

@protocol ModalViewControllerDelegate <NSObject> 
@optional 
-(void) sendInformation:(NSArray *)infoArray; 
@end 

@interface ModalViewController : UITableViewController <ConditionsViewControllerDelegate, UISearchBarDelegate> 
{ 
    UISearchBar *searchDrugBar; 
} 
@property (retain) id delegate; 
@property (nonatomic, strong) IBOutlet UISearchBar *searchDrugBar; 
@property (nonatomic, strong) NSArray *infoArray; 
@end 

ModalViewController.m其中OptionsInfo應該進來了。

-(void) optionsInfo:(NSArray *)optionsViewArray 
{ 
    //IT NEVER REACHES HERE :(
    NSLog(@"HERE"); 
    self.infoArray = optionsViewArray; 
    NSLog(@"Finished"); 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

有沒有人做過類似這樣的事情還是知道的解決方案這個?任何信息,鏈接,指導等,以正確的方向將不勝感激。提前致謝。

回答

0

您需要設置委託下面的OptionsViewController: -

在你OptionsViewController.m包括下列行的方法

[self setDelegate:ModalViewController]; 
+0

以下哪種方法? '[self dismissOptionsView];'或'[[self delegate] optionsInfo:sendArray];'。同樣使用'ModalViewController'意味着我將不得不''在OptionsViewController.h內部#import「ModalViewController.h」,正確嗎?我認爲我們不允許使用Protocols來做到這一點,關於遞歸所有權或類似的東西。 – Chris

+0

是的正確你必須導入ModalViewController.h,因爲直到除非你不會設置委託。您的方法不會被調用 –

+0

完成。現在我收到一個錯誤:'找不到'OptionsViewControllerDelegate'的協議聲明,你的意思是'UISplitViewControllerDelegate'?我在@界面上獲取了@ @ property(nonatomic,unsafe_unretained)id delegate1上的ModalViewController &&的錯誤信息''不知道有什麼關於? – Chris

相關問題