回答
您可以觀察到鍵值在其值發生變化時得到通知。數據類型可以是任何東西。對於定義爲Objective-C屬性的任何內容(在.h文件中使用@property),這已準備就緒,因此如果要觀察添加到視圖控制器的BOOL屬性,請按以下步驟操作:
in myViewController.h:
在myViewController.m@implementation myViewController
@synthesize mySetting;
// rest of myViewController implementation
@end
在otherViewController.m
@interface myViewController : UIViewController {
BOOL mySetting;
}
@property (nonatomic) BOOL mySetting;
:
// assumes myVC is a defined property of otherViewController
- (void)presentMyViewController {
self.myVC = [[[MyViewController alloc] init] autorelease];
// note: remove self as an observer before myVC is released/dealloced
[self.myVC addObserver:self forKeyPath:@"mySetting" options:0 context:nil];
// present myVC modally or with navigation controller here
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (object == self.myVC && [keyPath isEqualToString:@"mySetting"]) {
NSLog(@"OtherVC: The value of self.myVC.mySetting has changed");
}
}
in myViewController [self setMySetting:YES];更新 – mconnors 2013-11-26 14:48:31
如果它們是對象的屬性,那麼是的。
如果他們不是屬性,那麼沒有。
是;唯一的要求是這些變量出現的對象是這些屬性的鍵值兼容。
我相信你的意思是:如果屬性發生了變化,如何從'change'字典中獲得INT或BOOL值。
您可以簡單地這樣來做:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if ([keyPath isEqualToString:@"mySetting"])
{
NSNumber *mySettingNum = [change objectForKey:NSKeyValueChangeNewKey];
BOOL newSetting = [mySettingNum boolValue];
NSLog(@"mySetting is %s", (newSetting ? "true" : "false"));
return;
}
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
是否有一個特定的原因,如果你處理你的變量,而不是調用超級方法,你會返回?這樣超級方法只在調用KVO時調用,並不是你的變量。 – Leon 2017-02-23 10:02:04
- 1. 如何將觀察者添加到UIButton?
- 2. 如何將觀察者添加到NSManagedObject?
- 3. 如何將觀察者添加到AppDelegate?
- 4. 將觀察者添加到NSString中
- 5. 變量添加到一個變量可觀察<>
- 6. 聚合物:觀察者全局變量
- 7. 是否可以將觀察者添加到tableView.contentOffset?
- 8. 通過觀察者將按鈕添加到CMS_Page_Edit
- 9. 根據條件將RxJava觀察者添加到鏈中
- 10. C#通過JSON和REST API將觀察者添加到Jira isse
- 11. iOS:將觀察者添加到UIView的frame.origin.y?
- 12. 將通知觀察者添加到自定義類
- 13. 如何將基於時間的觀察者添加到Scala Future?
- 14. 將可觀察值添加到另一個可觀察值
- 15. 轉化觀察到變量
- 16. 上觀察到的變量
- 17. 在UICollectionViewCell中添加/刪除觀察者
- 18. 添加觀察者時AVPlayer崩潰
- 19. 在swift中添加通知觀察者
- 20. 如何在UISlider上添加觀察者
- 21. 觀察者模式-受試者保持到由觀察者
- 22. 觀察者模式 - 觀察者創建
- 23. 當觀察者的觀察者的壽命長於可觀察到的
- 24. 觀察者模式 - 將信息傳遞給觀察者
- 25. Rails 3觀察者並將變量傳遞給方法
- 26. Android「觀察者」
- 27. Angular2觀察者
- 28. CFNotificationCenterRemoveObserver觀察者
- 29. NSNotificationCenter將所有實例添加爲觀察者
- 30. 累加文本變量跨越觀察
沒有這些答案的一個幫助你(我或其他)? – XJones 2011-04-14 18:09:11