2012-08-15 26 views
11

Tôi đang làm theo hướng dẫn của Facebook để đăng lên tường của người dùng: http://developers.facebook.com/docs/howtos/publish-to-feed-ios-sdk/ và mặc dù nó được thực hiện với dự án .xib, tôi đã có thể làm mọi thứ tốt với dự án bảng phân cảnh của tôi cho đến nay. Tuy nhiên, tôi đã đi đến điểm mà tôi cần phải đặt một số mã vào phương thức initWithNibName: bundle: nhưng tôi không thể làm điều này vì tôi đang sử dụng bảng phân cảnh. Và, vì thật khó để biết chính xác khi nào phương thức sẽ được gọi, tôi không thể chỉ viết một phương thức có tên initWithNibName: bundle: và gọi nó từ một phương thức khác. Nếu bất cứ ai có bất kỳ ý tưởng về cách giải quyết vấn đề của tôi, xin vui lòng nói như vậy. Cảm ơn.initWithNibName trong storyboard

+0

Tôi đã tạo một dự án đơn giản trong GitHub làm ví dụ sử dụng FB SDK + iOS 6 và Bảng phân cảnh. Ứng dụng có thể đăng trong dòng thời gian: [FB SDK + Bảng phân cảnh với Xuất bản lên nguồn cấp dữ liệu] (https://github.com/Belzebul/fb-sdk-storyboards) Hy vọng điều này có thể hữu ích. –

Trả lời

39

Tôi chỉ tự mình gặp sự cố này. Bảng phân cảnh dường như không sử dụng initWithNibName:bundle:, nhưng là initWithCoder:(NSCoder *)aDecoder hoặc initWithStyle:(UITableViewStyle)style.

Việc triển khai mặc định trong hai phương pháp như sau:

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    self = [super initWithCoder:aDecoder]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (id)initWithStyle:(UITableViewStyle)style 
{ 
    self = [super initWithStyle:style]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

tôi chưa sử dụng phiên bản initWithStyle bản thân mình, nhưng tôi muốn tưởng tượng nó được gọi là một UITableViewController. Nếu nghi ngờ, bạn có thể chỉ cần thêm cả hai phương thức vào tệp, cùng với lệnh gọi NSLog() để in tên của phương thức (hoặc bất kỳ chuỗi duy nhất nào khác). Sau đó bạn có thể chạy nó trong trình mô phỏng để xem cái nào được gọi và xóa cái kia.

Tôi đặc biệt khuyên bạn không nên tự gọi số initWithNibName:bundle: từ bất kỳ phương thức nào khác trong số init. Tốt hơn là chỉ cần chuyển mã sang đúng phương thức.

+0

một số lời khuyên tốt nhất mà tôi từng thấy – finneycanhelp

+2

Nếu bảng phân cảnh không sử dụng initWithNib - tại sao nó được tạo theo mặc định khi thêm một lớp mới bằng cách sử dụng xcode 4.5 và bảng phân cảnh? – Dejell

+7

@Odelya Tôi không chắc chắn thỏa thuận này là gì (điều đó chắc chắn khá khó hiểu). Có vẻ như một sự giám sát ở ít nhất là để chúng ra khỏi khuôn mẫu mặc định (đặc biệt là kể từ khi sử dụng Storyboards được khuyến khích). Tôi đã không tìm thấy bất kỳ lời giải thích chính thức nào về điều đó, mặc dù tài liệu của Apple cho 'initWithNibName: bundle:' nói rằng phương thức 'initWithCoder:' được sử dụng thay thế khi làm việc với Storyboards. http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/initWithNibName:bundle: – Kitsune

Các vấn đề liên quan