我有一個初始的ViewController
,我們稱之爲HomeViewController
,它有一個調用模態視圖控制器的按鈕,可以稱它爲ModalViewController
。在那個ModalViewController
裏面我有兩個部分的表格視圖。如果您單擊第0部分中的任何單元格,則會將信息發送回HomeViewController
(這部分我已使用協議)。如果您點擊第1部分中的任何單元格,則會將其推送到具有選項的另一個視圖控制器,我們可以將其稱爲OptionsViewController
。這裏對我來說很棘手。如果您點擊其中的任何選項,請關閉OptionsViewController
並關閉ModalViewcontroller
,並將該信息發送到HomeViewController
,就像ModalViewController
到HomeViewController
一樣。我試圖建立一個類似於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];
}
有沒有人做過類似這樣的事情還是知道的解決方案這個?任何信息,鏈接,指導等,以正確的方向將不勝感激。提前致謝。
以下哪種方法? '[self dismissOptionsView];'或'[[self delegate] optionsInfo:sendArray];'。同樣使用'ModalViewController'意味着我將不得不''在OptionsViewController.h內部#import「ModalViewController.h」,正確嗎?我認爲我們不允許使用Protocols來做到這一點,關於遞歸所有權或類似的東西。 – Chris
是的正確你必須導入ModalViewController.h,因爲直到除非你不會設置委託。您的方法不會被調用 –
完成。現在我收到一個錯誤:'找不到'OptionsViewControllerDelegate'的協議聲明,你的意思是'UISplitViewControllerDelegate'?我在@界面上獲取了@ @ property(nonatomic,unsafe_unretained)id delegate1上的ModalViewController &&的錯誤信息''不知道有什麼關於? –
Chris