[英]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.