1. 程式人生 > >NSString 與 Class/Protocol/SEL 相互轉化

NSString 與 Class/Protocol/SEL 相互轉化

ont comm 類名 div nsarray mstr csdn gis nco

//NSString 與 Class 相互轉化

Class NSClassFromString (NSString *aClassName);

NSString * NSStringFromClass (Class aClass);

//NSString 與 Protocol 相互轉化

NSString * NSStringFromProtocol (Protocol *proto);

Protocol *NSProtocolFromString (NSString *namestr);

//NSString 與 SEL 相互轉化

NSString *NSStringFromSelector (SEL aSelector);

SEL NSSelectorFromString (NSString *aSelectorName);

我曾經遇到過,在一個頁面中可以有9個選擇去push 出不同的頁面。這樣的情況下,如果每個控制器的 push 我都要按照如下代碼來寫,這豈不是要累死自己, 所以我找了找一個簡單的方法。

RegisterViewController *registerVC = [[RegisterViewController alloc] init];
[self.navigationController pushViewController:registerVC animated:YES];

就是利用了NSString 與 Class 的轉化:

//將所有控制器類的字符串放入數組 array中
NSArray *arry = [NSArray arrayWithObjects:@"WantToLoanViewController",@"WantToSaleBusinessViewController",@"GetBusinessEverydayViewController",@"LoanGroupViewController",@"PledgeGroupViewController",@"CooperationViewController",@"ReconmmendForMeViewController",@"ActivityAnnouncementsViewController",@"ContactUsViewController", nil];
//取對應類名
NSString *className = [array objectAtIndex:indexPath.row];
Class Representative = NSClassFromString(className);
//創建 Controller 並 push
UIViewController *VC = [[Representative alloc] init];
[self.navigationController pushViewController:VC animated:YES];  



轉載自:http://blog.csdn.net/wangyanchang21/article/details/50732572

NSString 與 Class/Protocol/SEL 相互轉化