2012-08-03 13 views
6

tôi tiếp tục nhận được lỗi:Selector không được nhận gửi đến dụ UIViewController

NSInvalidArgumentException', reason: '-[UIViewController setPhotoCellName:]: unrecognized selector sent to instance

khi tôi nhập của tôi chuẩn bị cho cuộc gọi segue. Hiện tại tôi có

TabBarController->NavigationController->TableViewController->TableViewController->ViewController

bằng hình ảnh giao diện người dùng trên đó.

Sự cố xảy ra khi tôi cố gắng tách biệt khỏi bộ điều khiển TableView thứ hai sang ViewController. Tôi có thiết lập segue từ Prototype Cell đến ViewController thực tế. Nó đi vào segue và treo. Tôi đang cố gắng chuyển thuộc tính NSArray qua số viewController để có thể sử dụng URL trong đó và hiển thị số UIImage. PhotoInPlace chứa mảng mà Im đang cố gắng vượt qua. Đây là mã.

myTableViewControllerPhotoLocation.m Mã

#import "myTableViewControllerPhotoLocation.h" 
#import "FlickrImageViewController.h" 

@interface myTableViewControllerPhotoLocation() 
@end 

@implementation myTableViewControllerPhotoLocation 
@synthesize photoInPlace = _photoInPlace; //Contains NSArray to pass 


-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"Photo Display"]){ 
     NSIndexPath* indexPath = [self.tableView indexPathForCell:sender]; 
     NSLog(@" Dicitonary = %@", [self.photoInPlace objectAtIndex:indexPath.row]); //Returns the picked cell 
     NSLog(@"%@", [self.photoInPlace class]); //returns NSArray 
     NSLog(@"%@", [self photoInPlace]); //Returns the array 

     [segue.destinationViewController setPhotoCellName:[self.photoInPlace objectAtIndex:indexPath.row]]; 
     //Crashes HERE! 
    } 
} 

FlickrImageViewController.h Mã

@property (nonatomic, strong) NSArray* photoCellName; 

FlickrImageViewController.m Mã

#import "FlickrImageViewController.h" 

@interface FlickrImageViewController() 
@end 

@implementation FlickrImageViewController 
@synthesize photoCellName = _photoCellName; //property declared in header 


-(void) setPhotoCellName:(NSArray *)photoCellName{ 
    if(!_photoCellName) 
     _photoCellName = [[NSArray alloc] initWithArray:photoCellName]; 
    else { 
     _photoCellName = photoCellName; 
    } 
} 
+0

Tôi đã sử dụng kiểu mã này để truyền một mảng trong TVC trước đây Tôi không biết tại sao nó lại rơi vào cái này –

Trả lời

16

Bạn tin rằng điểm đến của bạn là một đối tượng từ FlickrImageViewController nhưng ứng dụng thì không. Nhìn vào lớp bạn đã gán bộ điều khiển đó trong bảng phân cảnh của bạn; theo lỗi, nó là một trần UIViewController.

+0

vì vậy bạn phải gán khung nhìn trong bảng phân cảnh cho lớp bộ điều khiển? –

+0

Không phải chế độ xem, bộ điều khiển chế độ xem. Khi nó được tải từ bảng phân cảnh, thời gian chạy phải biết loại đối tượng cần tạo. –

+0

Tôi đã thay đổi lớp của ViewController thành FlickrImageViewController nhưng bây giờ tôi nhận được một lỗi mới, [NSArray initWithArray: range: copyItems:]: đối số mảng không phải là một NSArray –

5

Nghe có vẻ như bạn đã vô tình có một vani UIViewController đơn giản hơn hơn một FlickrImageViewController. Có lẽ bạn quên gán lớp của bộ điều khiển?