2011-11-15 28 views
10

Tôi đang cố gắng gọi một phương thức trong bộ điều khiển xem từ đại biểu ứng dụng, nhưng Xcode nói Không có phương thức lớp đã biết nào cho bộ chọn 'myMethodHere'. Dưới đây là mã của tôi:Gọi phương thức điều khiển xem từ ứng dụng đại biểu

AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [..] 
      [MainViewController myMethodHere]; 
    [..] 
    return YES; 
} 

MainViewController.m:

-(void) myMethodHere { 
    [..] 
} 

Trả lời

11

tôi sẽ cố gắng

MainViewController * vc = [[MainViewController alloc]init]; 
[vc myMethodHere]; 
[vc release]; 
  1. Hãy chắc chắn để nhập MainViewController của bạn trong đại biểu ứng dụng của bạn .m tập tin
  2. đảm bảo bạn thêm "myMethodHere" để MainViewController bạn .h tập tin
+2

Im này không quá chắc chắn nếu điều này làm việc mặc dù. Điều này không tạo ra một phiên bản khác của chế độ xem mà bạn đang cố truy cập không? Cho phép nói rằng bạn đang cố gắng chạy một phương thức trong trình điều khiển chế độ xem đó, nhưng phương pháp này phụ thuộc vào một chút giao diện người dùng/dữ liệu trong chế độ xem đó, sau đó thực hiện điều này sẽ không hoạt động, vì trường hợp bạn đã tạo không chứa dữ liệu đó đúng?? – Supertecnoboff

0

Cố gắng viết

-(void) myMethodHere; 

trong MainViewController.h

11

Bạn đang cố gắng gọi phương thức lớp khi bạn muốn gọi phương thức dụ. Nếu bộ điều khiển xem là gốc xem điều khiển, sau đó bạn sẽ có thể gọi nó như sau:

UIWindow *window = [UIApplication sharedApplication].keyWindow; 
MainViewController *rootViewController = window.rootViewController; 
[rootViewController myMethodHere]; 

Nếu nó không phải là quan điểm điều khiển gốc sau đó bạn sẽ phải tìm một số cách khác việc tổ chức của ví dụ và sau đó gọi phương thức như trong dòng cuối cùng ở trên.

5

Nếu bạn muốn truy cập vào một bộ điều khiển xem trên một bảng câu chuyện, bạn có thể sử dụng khối mã này từ appdelegate:

MainViewController *rootViewController = (MainViewController*)self.window.rootViewController; 
[rootViewController aMethod]; 

Hãy nhớ thêm việc nhập khẩu.

1

Trong Swift, bạn có thể viết nó như

UIApplication.sharedApplication().keyWindow?.rootViewController?.yourMethodName() 
Các vấn đề liên quan