我試圖使用委託從一個VC傳遞值到另一個。我認爲我誤解了它應該工作的方式。Objective-C iOS 6委託NSString查詢
在我的主要ViewController.h我有這樣的:
@protocol defaultLocationChoice <NSObject>
- (NSString *) locChoice;
@end
在我PreferencesViewController.h和ChooseServerViewController.h我都必須在@interface部分聲明defaultLocationChoice
和財產assinged像這樣:
@property (nonatomic, assign) id <defaultLocationChoice> locationDelegate;
兩者都是合成的。
當用戶從PreferencesViewController塞格斯到ChooseServerViewController爲賽格瑞代碼的準備是:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"toServerChoice"]) {
ChooseServerViewController *viewController = (ChooseServerViewController *)segue.destinationViewController;
viewController.locationDelegate = self;
}
}
當一個細胞的選擇在ChooseServerViewController由我打電話:
[self locChoice];
那就是:
- (NSString *) locChoice {
NSLog(@"Cell Vale Loc choice %@",cellValue);
return cellValue;
}
NSLog驗證返回了正確的值。
現在,我想我明白了,LocChoice在委託中的價值現在是返回的值,不是嗎?
當用戶回到(NavController)的PreferencesViewController有:
-(void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
defaultLocation = [locationDelegate locChoice];
[self.tableView reloadData];
}
我期待defaultLocation的價值現在等於傳遞給locChoice值。但是,當表格重新加載相關單元格時仍然是空白的,暗示我所發生的事情不會發生。
任何想法?
你有沒有登錄defaultLocation? – Shashank 2013-03-09 03:25:19