2

私はインターネット全体で支援を求めてきましたが、手元にある私の問題に対する解決策はほとんどまたはまったくありませんでした。あえぎをつけようとしている私のプロジェクトはややユニークです(UIは典型的な規範に正確に従っていません)。

現在の開発環境:

  • xcode 4
  • ペン先の代わりにストーリーボード

以下は、私が達成しようとしていることの図です-すべてUIViewコントローラー内で:

ここに画像の説明を入力してください

  • UIViewは明るい灰色の背景です
  • UITableView 1-これは静的です(または動的である可能性があり、それは別の課題です)計算用に異なる数値を保持するUITableview
  • UITableView 2-これは、実行されるたびに計算結果を保持するUITableviewです。
  • UIImageView 1-これは計算された画像の例です(私はそれを理解しています)

経験豊富な開発者は私の問題、または私が尋ねようとしていることを完全に認識していると確信しています。静的UITableViewがテーブルビューコントローラーに存在する必要があることを理解していますが、両方のUItableViewを同時に表示する必要があります。つまり、UIView内に存在する必要があります。

インターフェイスをIBを介して必要なように見せることはできますが、コンパイルしてビルドしようとすると、UITableViewがUIViewControllerではなくUITableViewController内にある必要があるというエラーが表示されます。マスター/詳細レイアウトを使用した多くの例を見てきましたが、唯一の条件は、このUITableviewがこのビューにあるときに100%表示される必要があるということです。

だから基本的に、私は方向性を求めています...しかし、コード例も決して傷つけません!100倍以上ありがとうございます!

-ジョナサン

4

1 に答える 1

5

UITableViewControllerUIViewControllerフルスクリーンを表示するために特別に設計された特別なものですUITableView。これは、テーブルビューを管理するためにUITableViewControllerサブクラスまたはサブクラスを使用するのと(まったく)同等です。UIViewController <UITableViewDataSource, UITableViewDelegate>

したがってUITableViewController、より特殊な動作(存在しない場合はUITableViewを自動的に作成する、キーボードを表示するために自動的にスクロールする、管理する一意のdelegateおよびとして設定するなど)がある場合でも、標準を使用しておよびを管理できます。それを埋めるのです。dataSourceUITableViewUIViewControllerUITableViewdataSource

これは、全画面表示ではないテーブルビューを管理する方法でもあります(メインビューなどのサブビューではなく、UITableViewControllerそのviewプロパティが直接管理することを期待しているため、を使用するのとは対照的に、画面全体を表示することを期待しますそののカスタムサイズのサブクラスとしてを持っているan )UITableViewUITableViewUIViewControllerUITableViewview


したがって、あなたの場合、それぞれに1つずつ、合計UIViewController2つを持つことができ、その一意性は両方の(および)になることができます。問題ない。次に、データソースメソッドで、毎回正しいテーブルにフィードするために最初のデータと2番目のデータのどちらを返すかを区別するように注意してください。IBOutletstableViewUIViewControllerdataSourcedelegateUITableViewsUITableView

@interface MyViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (nonatomic, retain) IBOutlet UITableView* masterTableView;
@property (nonatomic, retain) IBOutlet UITableView* detailsTableView;
@end

@implementation MyViewController
@synthesize masterTableView = _masterTableView;
@synthesize detailsTableView = _detailsTableView;

// Proper memory mgmt not shown here:
//  - don't forget to set self.masterTableView and self.detailsTableView to nil in viewDidUnload
// - and to release _masterTableView and _detailsTableView in your dealloc method

-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
    UITableViewCell* cell;
    if (tableView == self.masterTableView)
    {
        static NSString* kMasterCellIdentifier = @"MasterCell";
        cell = [tableView dequeueReusableCellWithIdentifier:kMasterCellIdentifier];
        if (!cell)
        {
          cell = [[[UITableViewCell alloc] initWithReuseIdentiier:kMasterCellidentifier] autorelease];
          // do some configuration common to all your master cells
        }
        // configure the rest of your cell for each property that is different from one cell to another
    }
    else if (tableView == self.detailsTableView)
    {
        // Do exactly the same principle, but for the cells of your "details" TableView
    }
    return cell;
}
于 2012-09-17T20:34:17.443 に答える