1

空白の単純なプロジェクトがありますUIView。後で、サーバーから有用な情報を取得したら、UIView またはUITableView.

私はクラスを持っています:

@interface MyTableViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> {
}

そして、ファイルがAppDelegateありViewControllerます.xib

をロードするにはどうすればよいUITableViewですか? AppDelegate で標準の ViewController をアンロードするか、View 内に TableView をサブビューとしてロードする必要があります (可能ですか?) または、xib ファイルをまったく破棄する必要がありますか? もちろん、自分のビューでやりたいことはすべて、IB を使用せずにプログラムで行う必要があります。

私のアプリでは、受信データに応じて両方を作成したいと考えています。

4

5 に答える 5

2

私は uiview を作成し、uiview (rootViewController) 内に uitableview をロードします。つまり、インターフェイスビルダー (IB) を使用していると仮定します。これにより、物事がより視覚的になり、視覚的に操作しやすくなります。必要に応じて、関連するコードを追加します。

于 2012-04-18T08:32:25.477 に答える
2

このコードを .h ファイルに記述します

     @interface SelectPeopleViewController : UIViewController <UITableViewDelegate,  UITableViewDataSource> {

      UITableView *tableView;

       }

       @property (nonatomic, retain) UITableView *tableView;

ファイルの所有者にデータソースと Uitableview のデリゲートを追加するよりも

このコードを .m ファイルに記述します

          #pragma mark Table view methods

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

   // Customize the number of rows in the table view.
   - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
     return 5;
          }

      // Customize the appearance of table view cells.
     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

   static NSString *CellIdentifier = @"Cell";

   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  if (cell == nil) {
          cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
      }

// Set up the cell...
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:15];
cell.textLabel.text = [NSString  stringWithFormat:@"Cell Row #%d", [indexPath row]];

    return cell;
    }

         - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// open a alert with an OK and cancel button
     NSString *alertString = [NSString stringWithFormat:@"Clicked on row #%d", [indexPath row]];
   UIAlertView *alert = [[UIAlertView alloc] initWithTitle:alertString message:@"" delegate:self cancelButtonTitle:@"Done" otherButtonTitles:nil];
[alert show];
[alert release];
   }
于 2012-04-18T08:37:30.027 に答える
2

UITableViewController をプッシュするか、UIViewController に UITableView を含めることができます

または、tableView を UIViewController の現在のビューに追加します

UITableView tableView = [[UITableView alloc] initWithFrame:self.view.bound];
[self.view addSubView:tableView];
于 2012-04-18T08:33:15.433 に答える
1

はい、他のコントロールをビューに追加する必要がある場合は、UIViewController の UIVIew に UITableView を追加できます。

ビューコントローラーのビューにテーブルビュー以外のものがない場合は、それを UITableViewController のサブクラスにすることもできます。

于 2012-04-18T08:31:26.610 に答える
0

UIViewController で tableView を使用できます

   @interface MyViewController:UIViewController<UITableViewDelegate, UITableViewDataSource>
   {
        IBOutlet UITableView *mytableview;
   }
    @property(nonatomic,retain) IBOutlet UITableView *mytableview;

次に、viewController xib ファイルで、ビューにテーブルビューを作成します。ファイル所有者のmytableviewに接続します。デリゲートとデータソースをファイル所有者に設定することも忘れないでください。

後で .m ファイルでこれらの関数を作成し、データに従って変更します。

   - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
   {
       return 1; //how many sections in your tableView
   }

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

       return [myArray count]; //how many rows you have
   }

   - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
   {
       static NSString *CellIdentifier = @"MyCell";

       UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
       if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

// Configure the cell...

cell.textLabel.text = @"title";

return cell;
   }

   - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
   {
       NSLog("%d.row selected",indexPath.row);
   }
于 2012-04-18T08:40:19.873 に答える