我正在編寫一個iPhone應用程序,它從第一視圖(RootViewController
)接收用戶輸入,然後它需要將輸入傳遞給「結果」視圖控制器,這是使用輸入查詢服務器的另一視圖,解析JSON
字符串並在UITableView
中顯示結果。我被困在如何「發送」這些字符串(從用戶輸入RootViewController
)到第二個ViewController ...任何想法?如何將RootViewController的NSSString傳遞給另一個視圖?
Thx提前
斯蒂芬
我正在編寫一個iPhone應用程序,它從第一視圖(RootViewController
)接收用戶輸入,然後它需要將輸入傳遞給「結果」視圖控制器,這是使用輸入查詢服務器的另一視圖,解析JSON
字符串並在UITableView
中顯示結果。我被困在如何「發送」這些字符串(從用戶輸入RootViewController
)到第二個ViewController ...任何想法?如何將RootViewController的NSSString傳遞給另一個視圖?
Thx提前
斯蒂芬
有三種方法可以做到這一點,具體取決於視圖的設置方式。
首先,您可以使用NSNotificationCenter
發佈字符串的通知。另一種觀點將作爲通知的觀察員註冊,並可以在發佈信息時收集信息。其次,如果第二個視圖控制器由第一個視圖控制器呈現,即您將alloc/init VC分配給它並將其顯示爲一個導航控制器,則可以在第二個VC中創建一個屬性並從根目錄中對其進行設置。在第二VC的頭,你會創建以下文件:在實現文件
NSString *someString;
和
@property (nonatomic, retain) NSString *someString;
然後@synthesize someString;
。這樣做可以讓您在顯示視圖之前設置該值。
最後,如果視圖不相關,如第二個VC不是由根提供的那樣,您將創建一個從根到第二個VC的IBOutlet。假設你已經在過去的解決方案來設置喜歡的屬性,你會叫的東西沿着self.secondVC.someString = myStringToPass;
行希望那些人幫助
編輯:意識到我有註釋掉的鏈接NSNotificationCenter .... oops
子類的第二視圖的控制和寫自定義的初始化方法。
-(id)initWithMyCustomValueString:(NSString*)string;
並將您的數據傳遞給它。
確保您在secondViewController上創建了一個iVar或屬性來讀取數據。
作品,但醜陋。我同意擁有字符串的屬性,但是如果一個對象正在創建另一個對象,那麼可能只需調用一個普通的初始化器,然後在該對象上設置屬性。 – Abizern
在第二個視圖控制器中,創建一個NSString實例以接收該值並在您要顯示該控制器時設置它,例如在tableView:didSelectRowAtIndexPath:
方法中。
RootViewController.h
@interface RootViewController : UITableViewController
{
NSString *stringToPass;
}
@property (nonatomic, retain) NSString *stringToPass;
@end
RootViewController.m
#import "SecondViewController.h"
@implementation RootViewController
@synthesize stringToPass;
// Other code goes here...
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// for example first cell of first section
if (indexPath.section == 0 && indexPath.row == 0)
{
SecondViewController *second = [[SecondViewController alloc] initWithStyle:UITableViewStyleGrouped];
// here you pass the string
second.receivedString = self.stringToPass;
[self presentModalViewController:second animated:YES];
[second release];
}
}
@end
SecondViewController.h
@interface SecondViewController : UITableViewController
{
NSString *receivedString;
}
@property (nonatomic, retain) NSString *receivedString;
@end
SecondViewController。米
@implementation SecondViewController
@synthesize receivedString;
// methods to use the string goes here
@end
我還沒有測試此代碼...我已經寫了回憶吧:)
Thx幫忙! – Steve
我的榮幸。總是樂於幫助 – justin