簡體   English   中英

Objective-C:NSClassFromString()與導航控制器一起使用?

[英]Objective-C: NSClassFromString() use with navigation controller?

我想使用NSClassFromString()將字符串傳遞給,以便確定將哪個類推送到導航控制器上。 問題是,我想將一個值傳遞給此類,這會導致錯誤,並且由於NSObject不是UIViewController類型類,因此嘗試推送視圖控制器也會導致錯誤。

Class screenClass = NSClassFromString(screen.name);
NSObject* newClass = [[screenClass alloc] init];
newClass.asset = asset; // Causes errors because asset not in NSObject
[self.navigationController pushViewController:newClass animated:YES];// newClass is an NSObject
[newClass release];

有沒有更好的方法來做我在這里嘗試的事情?

你可以做

UIViewController *newObject = (UIViewController *)[[screenClass alloc] init];

然后,警告將被刪除。

如果無法靜態鍵入變量,則不能使用點表示法。 如果所有可能的類均來自聲明該方法的一個公共類,則可以將其靜態鍵入為該類。 否則,您需要對asset屬性使用accessor方法:

Class screenClass = NSClassFromString(screen.name);
id newClass = [[screenClass alloc] init]; // note that it's an id to indicate that we don't know what it'll be more specifically than an object
[newClass setAsset:asset];
[self.navigationController pushViewController:newClass animated:YES];
[newClass release];

假設asset屬性的設置器是setAsset:通常是)。

暫無
暫無

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

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