0

更新:問題は解決されました。関数クラスのすべてを myView クラスに直接入れました....今では魅力のように機能します。理由は正確にはわかりませんが、そうです。たぶん、あなたの何人かはそれについて推測することができました。どんな助けでも大歓迎です。

------

Objective-C を導入する前は、少なくとも上級プログラマーだと思っていました。しかし今、私は少し窮地に立たされています。ほら、データが定期的に更新されるはずの UITableView があります。私のアプリは、Web サーバーからデータを取得し、配列に格納します。これまでのところ、NSLog出力に従って機能するすべてがうまくいっています。[myTable updateData]ボタンアクションに入れると、UiTableView EVEN UPDATES 。しかし、別のメソッドから呼び出されると、何もしません...

これまでの私のコード (省略): myView.h:

@interface myView : UIViewController <UITableViewDataSource, UITableViewDelegate> {
    @public
    IBOutlet UITableView *myTable;
}

- (void)reloadMyTable;
- (IBAction)testbtn:(id)sender;

@end

myView.m:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:  (NSInteger)section

{
    Model *model=[Model getInstance];
    return [model.ARrecentnews count];
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{
    return numberOfSections;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:   (NSInteger)section

{
    return @"Some Headline";
}

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

{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellID"];
    Model *model=[Model getInstance];
    cell.textLabel.text = [model.ARrecentnews objectAtIndex:([model.ARrecentnews count]-indexPath.row-1)]; //Populating Table in reverse order

    return cell;
}


- (IBAction)testbtn:(id)sender {

    [myTable reloadData];

}


- (void)reloadMyTable {

   [myTable reloadData];

}
4

4 に答える 4

0

メイン スレッドから UI コードを呼び出していることを確認します。

- (void)reloadMyTable {
    dispatch_async(dispatch_get_main_queue(), ^{
        [myTable reloadData];
    });
}

(Web サーバーからデータを取得するコードがバックグラウンド スレッドで実行されているのではないかと強く疑っています。そうでない場合はそうすべきです)...

于 2013-09-05T11:35:16.073 に答える
0

まず、xib で Outlet を TableView に指定したことを確認してください。xibファイルで取得したテーブルビューにmyTableを接続したことを意味します。.h ファイルで置換

UITableView *myTable;

IBOutlet  UITableView *myTable;

参照を提供します。

次の行を cellFor RowAtIndexPath に追加します。

if(cell==nil)
{
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cellID"];
}

これがあなたを助けることを願っています。

于 2013-09-05T12:05:14.370 に答える