이 질문에 대해 몇 가지 예를 보았지만 제 경우에는 큰 차이가 있습니다. 다음 LTModel
과 같은 다른 클래스의 컨테이너 인 클래스가 있습니다 LTChallenge
.
여기 있습니다 LTModel
:
#import <Foundation/Foundation.h>
#import "LTChallenge.h"
@interface LTModel : NSObject
@property NSMutableArray *challenges;
-(int) numberOfChallenges;
-(void) addChallenge:(NSString *) challengeName;
-(LTChallenge*) challengeAtIndex:(NSInteger) index;
@end
여기 있습니다 LTChallenge
:
@interface LTChallenge : NSObject
@property NSString *name;
@property NSMutableArray *times;
- (instancetype)init:(NSString *)challengeName;
- (void) addObject:(LTTime *) time;
@end
그리고 지금 UITableViewController
나는 도전의 이름으로 내 테이블을 채우려 고 노력하고 있습니다. 먼저 가치를 부여합니다.
- (void)viewDidLoad
{
[super viewDidLoad];
//Instantiate
lapTimerModel = [[LTModel alloc] init];
[lapTimerModel addChallenge:@"Clap 20 times"];
[lapTimerModel addChallenge:@"Say the alphabet"];
[lapTimerModel addChallenge:@"100 Meter Sprint Challenge"];
[lapTimerModel addChallenge:@"Read the IOS al spec challenge"];
}
그리고 마지막으로 도전 이름이 필요한 테이블을 채 웁니다.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [lapTimerModel numberOfChallenges];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if(cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = [lapTimerModel challengeAtIndex]; //???? Maybe in this line I need challenges array in LTModel, I used this but did not work
// cell.textLabel.text = [lapTimerModel.challenges objectAtIndex:indexPath.row];
return cell;
}
objectAtIndex:indexPath.row
물음표로 표시 한 줄은 어떻게 사용 하나요? 제안을 감사하십시오.
편집하다
다음은 구현입니다. challengeAtIndex
-(LTChallenge*) challengeAtIndex : (NSInteger) index{
return [_challenges objectAtIndex:index];
}
도전은 NSString이 아닙니다. 그리고 NSString을 cell.textLabel.text에 할당해야합니다.
LTChallenge *challenge = [lapTimerModel challengeAtIndex:indexpath.row];
cell.textLabel.text = challenge.name;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다