开发者

How to return values from view2 to view1 on UINavigationcontroll

I am New to the iPhone Development. How can i carry a string value from view2 to view1 when using navigation bar.

I have no problem in carrying string values from view1 to view2 to....by using pushviewcontroller But when i come back to previous views using Back button of navigation bar, I cannot able to hold string values.

I already seen post related this "http://stackoverflow.com/questions/2903967/how-return-a开发者_Go百科-value-from-view2-to-view1-when-using-navigation-bar" and that is not worked for me or may be i did wrong.

I need your help in solving this issue.

Thanks in advance,

Nagarajan Govindarajan.


You could use a delegate. You could also have a property in view1 that view2 can access and store the string into. The delegate is the better way to do it.

Take a look at Apple's samples to see how they use delegates. The question you refer to is correct, so I think you just need to understand it well enough to be able to debug your implementation.


In Your project app delegate class declare and define a string(exp str1). Also alloc and initialize this string.

In your view 2 class inport Appdelegate class. Declare its object like:

TestAppDelegate *appDeleg;

In viewDidLoad of class 2 define:appDeleg = [[UIApplication sharedApplication] delegate];

now store appDeleg.str1 = your string in view2 which you want to store and use in view 1.

do same declaration in view 1 and use there strView1= appDeleg.str1;


The best way I recommend is to use a Data class. Declare variables in a Data class and use them throughout. This is how it works :

//DataClass.h

@interface DataClass : NSObject {    

NSString *str;     

}    
@property(nonatomic,retain)NSString *str;    
+(DataClass*)getInstance;    
@end  

//DataClass.m

@implementation DataClass    
@synthesize str;    
static DataClass *instance =nil;    
+(DataClass *)getInstance    
 {    
    @synchronized(self)    
    {    
        if(instance==nil)    
        {    

             instance= [DataClass new];    
        }    
    }    
    return instance;    
}    

Now in your view controller you need to call this method as :

DataClass *obj=[DataClass getInstance];  
obj.str= @"I am Global variable";  

This variable will be accessible to every view controller. You just have to create an instance of Data class.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜