2010-07-30 7 views
3

내 iPhone 앱에는 UITableView와 다른 UIView가 있고, xib 파일에 UITableView와 다른 UIView가 포함되어있는 UIViewController가 있습니다. 두 뷰 모두 IBOutlet으로 xib 파일의 해당 뷰에 링크됩니다. 나는 내가있는 UIViewController이 같은 방법을 만들려면 jQuery과에 대한 프로그래밍 방식으로 데이터 소스를 설정하려는 경우 :의가 B를 호출하자UITableView : 프로그래밍 방식으로 데이터 소스를 설정하십시오.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil tableDataSource:(id)dataSource{ 
if ((self = [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 
    // Custom initialization 
    self.inventoryTableView.dataSource = dataSource; 
    //[self.inventoryTableView reloadData]; 
} 
return self;} 

다음 나는 내 다른 클래스에서 다음 메소드를 구현 :

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

마지막으로 + init B를 할당하고 UIViewController를 만드는 initWithNibName:bundle:tableDataSource: 메서드에 인스턴스를 전달합니다. 모든 뷰가 시뮬레이터에 나타나지만 데이터 소스 메소드가 호출되지 않은 것처럼 보입니다. 나는 다른 컨트롤러와 비슷한 것을하고 작동하지만 UITableViewController이며 TableView는 컨트롤러의 뷰입니다. 그것은 가능성이 하위 뷰 initWithNib 다른 다른 메서드에서 데이터 원본을 설정할 필요가 있습니까?

UPDATE : 내가 그것을 해결할 수 있었다 viewDidLoad: 방법으로 데이터 소스 대입 넣어. [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil]을 호출 한 후에도 기본보기의 하위보기가 제대로 입력되어 있지 않은 것으로 보입니다.

답변

0

으로 업데이트와 코멘트했다, 나는 할당 inited는 할있는 tableView 기다릴 필요했기 때문에 대리자/데이터 소스를 설정 위치를 변경하여 해결. 서브 뷰로 클래스의 메인 뷰보다 나중에 할당/삽입된다는 것을 알 수 있습니다.

+0

viewDidLoad 메서드를 게시 할 수 있습니까? 당신과 같은 일을하려고하지만 viewDidLoad 메서드에서 self.table.dataSource를 설정하는 대상은 무엇입니까? 위의 코드에서 init 메소드에서 사용할 수있는 dataSource로 설정해야합니다. – RyanG

2

이 대답을 살펴보면 "B"를 외부 데이터 소스로 사용하여 제안한 것과 유사하다고 생각합니다. 컨트롤러.

Simple way to separate UITableview datasource and delegate from main UIViewController class?

+0

나는 그것과 그 내부의 링크도 읽습니다. IB에서 전달하고 싶지 않습니다. (그리고 데이터 소스 클래스를 istanziate로합니다.) 프로그래밍 방식으로하고 싶습니다. (그리고 나는 이미 게시물에서 말한 것과 비슷한 또 다른 상황을 위해 이미했습니다.) – rano

+0

'viewDidLoad :'메소드에서 데이터 소스를 설정하여 문제를 해결하는 것 같았습니다. 하지만 여전히 다른 클래스에서 작동하는 이유를 모르겠습니다. – rano

관련 문제