1

さて、現在の状況です。PlaylistController と呼ばれる UIViewController (整頓のためのカスタム クラス) があります。このコントローラーは、UITableViewDelegate および UITableViewDataSource プロトコルを実装し、UITableView に NSMutableArray からのいくつかの基本情報を大雑把に入力します。

PlaylistController.h:

@interface PlaylistController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
    @public NSMutableArray* _playlists;
    @public NSMutableArray* _tracks;
}

@property (nonatomic, strong) IBOutlet UITableView *tableView;

PlaylistController.m:

- (void)viewDidLoad
{
    [super viewDidLoad];

    tableView.delegate = self;
    tableView.dataSource = self;
    _playlists = [[NSMutableArray alloc] initWithObjects:@"Heyy", @"You ok?", nil];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)aTableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section {
    return [_playlists count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"CellIdentifier";

    // Dequeue or create a cell of the appropriate type.
    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    cell.textLabel.text = [NSString stringWithFormat:@"%@", [_playlists objectAtIndex:indexPath.row]];
    return cell;
}

適切なタブをクリックして UIViewController を表示すると、すべてが読み込まれます。私の問題は、新しいデータが利用可能になったときにデータソースを変更することです。

新しいデータが別のクラスからのものであることを考慮して、データソースを更新するにはどうすればよいですか? シングルトン?

4

1 に答える 1

0

「プレイリスト」配列をビュー コントローラーのパブリック プロパティとして公開します。設定時に tableview に reloadData を促すカスタム セッターを実装します。

@property (strong, nonatomic) NSArray* playlists;

...

@synthesize playlists=_playlists;

...

- (void) setPlaylists: (NSArray*) playlists
{
    _playlists = playlists;

    if ( self.isViewLoaded )
    {
        [self.tableView reloadData];
    }
}
于 2013-07-19T22:50:07.277 に答える