2011-03-15 42 views
0

我需要從應用程序委託檢測主UIView(用戶實際上正在觀看的視圖)已更改。檢測UIView修改

  1. 他有一個iOS通知?
  2. 如果不是,我可以從一個計時器執行一個函數......但是如何檢查主視圖(用戶實際觀看的視圖)是否發生了變化?

-Fred

+1

@ user31 - 你改變了什麼意思 - 就像它的框架發生了變化,子視圖被添加或刪除了,還是其他的東西? – Anurag 2011-03-15 07:16:31

+0

我的意思是「改變」:我的應用程序是由每個tabbar的tabbarcontroller + navControllers組成...每個NavigationController由ViewControllers組成...我想從我的計時器代碼中檢測到currentView(用戶正在觀看)已被修改從最後一個計時器滴答... – fvisticot 2011-03-15 19:29:13

回答

-1

視圖可以改變的唯一方法是,如果您的應用程序在一定程度上改變它。

+0

謝謝你的回答...但我想要做什麼......我想在任何XCode項目中添加一個類,並且這個類正在做出一個行動,如果她正在檢測視圖已經改變(沒有任何項目類的知識)。我的想法是在這個額外的類中包含一個計時器,用於檢查當前顯示的視圖是否已經改變...希望這個描述對你來說更加清晰。 – fvisticot 2011-03-17 07:07:11

0

如果你希望它是通用的,你可以嘗試使用通知。

在你想要的信號及其變化「失蹤」,你可以在dealloc方法

-(void)dealloc{ 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"ViewChanged" object:nil]; 
} 

,並在正在響應您可以監聽「ViewChanged」改變的代碼添加您的通知任何的UIView通知。您可以使用此代碼執行此操作:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewChanged) name:@"ViewChanged" object:nil]; 

-(void)viewChanged{ 
// do what ever you want after the view has changed 
} 
+0

感謝您的回答,但實際上我想避免修改每個視圖以添加此修改...並且如果我的應用程序正在使用第三方庫,則無法添加此通知。這就是爲什麼我想用一個計時器來分析2個刻度之間的變化...... – fvisticot 2011-03-21 19:30:09

0

您應該爲UIViewController類調整選擇器。就像你可以調整viewWillAppear到你創建的customViewWillAppear。因此,當應用程序將生成viewWillAppear的調用時,您調用的方法(customViewWillAppear)將被調用。所以,你可以識別出,用戶已經改變了屏幕。

不要忘記調用實際的方法來執行寫在viewWillAppear方法中的東西。