2013-01-03 18 views
11

मेरे पास एक बटन वाला एक प्रोजेक्ट है जो उपयोगकर्ता को सूची दृश्य (UITableView) और ग्रिड व्यू (UICollectionView) के बीच स्विच करने की अनुमति देता है लेकिन मुझे नहीं पता कि यह कैसे करें।UITableView और UICollectionView को कैसे स्विच करें

+6

यह बहुत खराब अंग्रेजी नहीं है लेकिन वर्तमान में यह एक खराब सवाल है। क्या आप _exactly_ पर फंस गए हैं? आपने अभी तक क्या करने की कोशिश की है? –

+0

मुझे खेद है @ लेकिन मैं एक नौसिखिया हूँ! –

उत्तर

19

मान लें कि आपके नियंत्रक एक UITableView संपत्ति tableView नाम और एक UICollectionView संपत्ति collectionView नामक करते हैं। आपके viewDidLoad में आपको प्रारंभिक दृश्य जोड़ने की आवश्यकता है।

- (void)viewDidLoad 
{ 
    self.tableView.frame = self.view.bounds; 
    [self.view addSubview:self.tableView]; 
} 
फिर अपने बटन कॉलबैक में

, विचारों बाहर स्वैप:

- (void)buttonTapped:(id)sender 
{ 
    UIView *fromView, *toView; 

    if (self.tableView.superview == self.view) 
    { 
     fromView = self.tableView; 
     toView = self.collectionView; 
    } 
    else 
    { 
     fromView = self.collectionView; 
     toView = self.tableView; 
    } 

    [fromView removeFromSuperview]; 

    toView.frame = self.view.bounds; 
    [self.view addSubview:toView]; 
} 

आप एक फैंसी एनीमेशन चाहते हैं, आप के बजाय +[UIView transitionFromView:toView:duration:options:completion:] उपयोग कर सकते हैं:

- (void)buttonTapped:(id)sender 
{ 
    UIView *fromView, *toView; 

    if (self.tableView.superview == self.view) 
    { 
     fromView = self.tableView; 
     toView = self.collectionView; 
    } 
    else 
    { 
     fromView = self.collectionView; 
     toView = self.tableView; 
    } 

    toView.frame = self.view.bounds; 
    [UIView transitionFromView:fromView 
         toView:toView 
         duration:0.25 
         options:UIViewAnimationTransitionFlipFromRight 
        completion:nil]; 
} 
की यह तालिका दृश्य है लगता है चलो
+0

धन्यवाद! लेकिन मैं किस व्यू कंट्रोलर का उपयोग कर सकता हूं? TableViewController या संग्रह दृश्य नियंत्रक। मैं एक बाहरी वर्ग (ViewController नहीं) में TableViewDelegate और डेटास्रोत का उपयोग कैसे कर सकता हूं? –

+0

बस एक सामान्य UIViewController का उपयोग करें, और गुणों के रूप में दोनों प्रकार के दृश्य जोड़ें। या, यदि आप दो विचारों के लिए तर्क को अलग रखना चाहते हैं, तो आप एक UITableViewController और UICollectionViewController बना सकते हैं और मुख्य नियंत्रक के गुणों के बजाय उनके विचारों का उपयोग कर सकते हैं। – Simon

+0

यदि आपके विचार पहले से ही दृश्य पदानुक्रम का हिस्सा हैं (उदाहरण के लिए xib/storyboard के साथ जोड़कर) आपको 'UIViewAnimationOptionShowHideTransitionViews' को' + transitionFromView: ToView: अवधि: विकल्प: समापन: 'विधि में विकल्प पैरामीटर में से एक के रूप में पास करना होगा । – MrBr

2

इससे निपटने का एक और तरीका एक UICollectionView है जिसमें आप इच्छित मोड के आधार पर UICollectionViewFlowLayout कार्यान्वयन स्विच कर सकते हैं।

UITableView से UICollectionView में कनवर्ट करने के लिए, ऑनलाइन बहुत सारे ट्यूटोरियल हैं, उदाहरण के लिए this

संबंधित मुद्दे