0

私のアプリでは、ユーザーがボタンを押すと、そのトピックに関する情報を別のビューで生成したいと考えています。たとえば、ユーザーが猫のボタンを押すと、タイトルと説明を表示する新しいビューが表示されます。ただし、犬を押すと同じビューに移動しますが、情報が変わります。

firstViewController.h

#import "secondview.h"

@interface ViewController :UIViewController 
{
    secondview *secondviewData;
    IBOutlet UITextField *textfield;
}

@property (nonatomic, retain)secondview*secondviewData;

-(IBAction)passdata:(id)sender; 

@end

firstViewController.m

#import "ViewController.h"
#import "secondview.h"

@implementation ViewController

@synthesize secondviewData;

-(IBAction)passdata:(id)sender 
{
    secondview *second = [[secondview alloc] initWithNibName:nil bundle:nil];  
    self.secondviewData = second; 
    secondviewData.passedValue = @"dog Info";
    [self presentModalViewController:second animated:YES];
}

@end

secondViewController.h

@interface secondview :UIViewController 
{
    IBOutlet UILabel *label;  
    NSString *passedValue;
}

@property (nonatomic, retain)NSString *passedValue;

-(IBAction)back:(id)sender;

@end

SecondViewController.m

#import "ViewController.h"

@implementation secondview

@synthesize passedValue;

-(IBAction)back:(id)sender 
{
    ViewController *second = [[ViewController alloc] initWithNibName:nil bundle:nil];
    [self presentModalViewController:second animated:YES];
} 

- (void)viewDidLoad
{
    label.text = passedValue;
    [super viewDidLoad];
} 

@end

このコードを実行すると、SIGABRT

4

1 に答える 1

1

次のビューが現在のビューから分離されている場合は、次を使用できます。 ここに画像の説明を入力

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"nextViewSegue"]){

        nextViewController *nextViewObj  = segue.destinationViewController;
        nextViewObj.someNSString = @"the string you wanna to pass";
    }
    else if ([segue.identifier isEqualToString:@"nextViewSegue2"]){
        otherNextViewController *otherNextViewObj  = segue.destinationViewController;
        otherNextViewObj.someNSString = @"the string you wanna to pass";
    }
}

---------------------------別の方法があります: ------------------ ----------

グローバル変数を使用してパラメーターを渡すことができます。

クラスを作成する

.h

   @interface iXxxxxxGlobal : NSObject
    {
        NSString *globalString;

    }
    @property (nonatomic,retain)NSString *globalString;
    +(iXxxxxxGlobal *)getInstance;
    -(void) updateSetting;
    @end

.m

#import "iXxxxxxGlobal.h"

@implementation iXxxxxxGlobal

@synthesize globalString;

static iXxxxxxGlobal *instance = nil;


+(iXxxxxxGlobal *)getInstance
{
    if(instance ==nil)
    {
        instance = [iXxxxxxGlobal new];
        // Get initial value from Preferences and Settings.
        // Use <<Preferences and Settings>> 

    }
    return instance;
}

-(void)updateSetting
{
    //Do something to update <<Preferences and Settings>> 
}

@end

グローバル変数を使用するたびに、これを行う必要があります。

iXxxxxxGlobal *iXxxxxxGlobalObj=[iXxxxxxGlobal getInstance];
iXxxxxxGlobalObj.globalString = @"your string";
NSString *localString = iXxxxxxGlobalObj.globalString;
于 2013-04-09T06:39:53.697 に答える