簡體   English   中英

將NSString從一個視圖傳遞到另一個視圖

[英]Passing NSString from one view to another view

我有2個視圖共享相同的類文件(.h和.m)。 在第一個視圖中,我有一個帶有項目列表和按鈕的UIPicker。 如果用戶單擊該按鈕,則我希望第二個視圖顯示適當的圖片(基於UIPicker中選擇的項目)。

我的想法是根據所選項目在第一個視圖中設置NSString。 然后,當用戶單擊按鈕以將第二個視圖推到屏幕上時,我可以將該字符串傳遞給新視圖。 我已經“搜尋”了一段時間,但似乎無法將手指纏住它。 如果有關系,我正在使用導航控制器。 這是單擊按鈕時執行的代碼:

-(IBAction) viewPictures{
     ViewControllerClass *sView = [[ViewControllerClass alloc] initWithNibName:@"ViewController2XIB" bundle:nil];
     [self.navigationController pushViewController:sView animated:YES];
}

您可以將NSString *屬性添加到ViewControllerClass並在初始化后進行設置(這是最簡單的方法),也可以創建自己的init方法來接收字符串並將其設置在那里。

選項1:

(將其放在您的.h文件中)

@interface ViewControllerClass : UIViewController {
  NSString *someString;
}

@property (nonatomic, copy) NSString *someString;

@end

(然后在您的.m文件中)

@implementation ViewControllerClass
@synthesize someString;
@end

從上面更改代碼:

-(IBAction) viewPictures{
     ViewControllerClass *sView = [[ViewControllerClass alloc] initWithNibName:@"ViewController2XIB" bundle:nil];
     sView.someString = @"Whatever String you want";
     [self.navigationController pushViewController:sView animated:YES];
}

選項2:

(將其放在您的.h文件中)

@interface ViewControllerClass : UIViewController {
  NSString *someString;
}

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle someString:(NSString *)SomeString;

@end

(然后在您的.m文件中)

@implementation ViewControllerClass

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle someString:(NSString *)SomeString
{
  if(self = [super initWithNibName:nibName bundle:nibBundle]) {
    someString = [SomeString copy];
  }
  return self;
}

@end

從上面更改代碼:

-(IBAction) viewPictures{
     ViewControllerClass *sView = [[ViewControllerClass alloc] initWithNibName:@"ViewController2XIB" bundle:nil someString:@"Whatever String you want"];
     [self.navigationController pushViewController:sView animated:YES];
}

像Chris所說的那樣,將NSString放在共享這兩個視圖的.m文件中。 在響應按鈕的方法中,單擊將字符串從uipicker傳遞到您創建的NSString,然后將其傳遞到視圖2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM