2010-04-11 56 views

回答

0

我會使用應用程序委託。或者,如果一個視圖擁有另一個視圖,則可以將它們初始化並保留在課程中的主要引用。

我總是覺得有一個全局的Context對象來保持視圖間的全局信息。這些信息可能是配置信息,設備當前方向,數據庫處理程序等。

對於需要跨訪問的變量,可以使用屬性。

class VC1 : UIViewController { 
    NSString* v1; 
    NSString* v2; 
} 

@property (copy) NSString *v1; 
@property (copy) NSString *v2; 

,然後在其他視圖:

class VC2 : UIViewController { 
    VC1 *vc1; 
} 

,並在VC2你消息的實現,您可以使用VC1的v1和v2是這樣的:

- (void) someMessage { 
    NSLog(@"VC1's v1 value is %@ and v2 value is %@", [vc1 v1], [vc1 v2]); 
} 

希望它能幫助。

+0

我的變量在哪裏,一個視圖如何知道另一個變量? – Moshe 2010-04-11 13:34:48

+0

用一些代碼更新了我的答案。希望能幫助到你。 – 2010-04-11 13:47:57

+0

看起來不錯,但我如何獲得VC2的VC1值?每個視圖控制器現在都會通過代理查看另一個視圖控制器嗎? – Moshe 2010-04-23 20:51:46

1

如果你想發回信息,你可以使用target-action(UIControl的方式),或者你可以發送NSNotifications,或者使用通用的委託協議。除非在整個應用程序中使用這些信息,否則將其放入您的應用程序委託可能會過度。

+0

我會說,雖然這是一種快速和骯髒的方式來傳遞視圖之間的數據,它不是很好的做法。它將視圖控制器連接在一起,使應用程序難以維護和擴展。 – TechZen 2010-04-11 14:26:40

+0

它非常明確地沒有將任何東西連接在一起。聯軸器在哪裏? – 2010-04-11 14:51:54

+0

NSNotifications和代表+1 – Anurag 2010-04-11 18:32:40