2009-08-21 19 views
5

मैं अपने ऐप में एक टैब के रूप में एक ABPeoplePickerNavigationController दिखा रहा हूं। उपयोगकर्ता एक नाम पर क्लिक करता है, फिर ईमेल पता, फिर मैं ईमेल पते के साथ कुछ करता हूं।अजीब RowAtIndexPath पर एक ABPeoplePickerNavigationController

बाद में, मैं उस व्यक्ति और संपत्ति के लिए चाहता हूं जिसे उन्होंने फीका करने के लिए चुना है (हाइलाइट नहीं किया गया है)।

एक सामान्य तालिका में, मैं deselectRowAtIndexPath को कॉल करता हूं। लेकिन ABPeoplePickerNavCont के साथ मुझे लगता है कि इसकी तालिका तक पहुंच नहीं है, और न ही मुझे पता है कि इंडेक्सपैथ का चयन किस प्रकार किया गया है, न ही पंक्ति को अचयनित करने के लिए एक एपीआई है।

अधिकांश ऐप्स पर, ABPeoplePickerNavCont को सामान्य रूप से उपयोग किया जाता है, इससे कोई फर्क नहीं पड़ता कि पंक्ति अभी भी हाइलाइट की गई है क्योंकि पूरी चीज को खारिज कर दिया जाता है। लेकिन मेरे ऐप में इसे बर्खास्त नहीं किया जाता है (जैसे फोन ऐप में संपर्क टैब की तरह)।

कोई विचार?

उत्तर

3

एनीमेशन के बिना लोगपिकर को खारिज कर दें, फिर इसे एनीमेशन के बिना फिर से प्रस्तुत करें। अच्छा लग रहा है।

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{ 

    [self dismissModalViewControllerAnimated:NO]; 

    [self presentModalViewController:peoplePicker animated:NO]; 
     return NO; 
} 
+0

सुझाव के लिए धन्यवाद। मेरे लोग पिकर को मोडल के रूप में नहीं दिखाया जा रहा है - यह एक टैब बार पर एक टैब है ... इसलिए इसे इस तरह से खारिज करना संभव नहीं है। –

10

यह वही है जो मैं कर रहा हूं ... और ऐसा लगता है कि यह पूरी तरह से काम करता है। जब आप कोई आइटम चुनते/अचयनित करते हैं तो मैं एक चेकमार्क एक्सेसरी भी जोड़ रहा हूं। आप क्या सोचते हैं मुझे बताओ।

UIView *view = peoplePicker.topViewController.view; 
    UITableView *tableView = nil; 
    for(UIView *uv in view.subviews) 
    { 
    if([uv isKindOfClass:[UITableView class]]) 
    { 
     tableView = (UITableView*)uv; 
     break; 
    } 
    } 
if(tableView != nil) 
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:[tableView indexPathForSelectedRow]]; 

    cell.accessoryType = cell.accessoryType == UITableViewCellAccessoryNone ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone; 

    [tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:YES]; 
} 

आशा इस मदद करता है: धन्यवाद :)

UIView *view = peoplePicker.topViewController.view; 
UITableView *tableView = nil; 
for(UIView *uv in view.subviews) 
{ 
    if([uv isKindOfClass:[UITableView class]]) 
    { 
     tableView = (UITableView*)uv; 
     break; 
    } 
} 

if(tableView != nil) 
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:[tableView indexPathForSelectedRow]]; 

    cell.accessoryType = cell.accessoryType == UITableViewCellAccessoryNone ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone; 

    [cell setSelected:NO animated:YES]; 
} 
+0

उत्कृष्ट ....... – Muzammil

4

रॉबी Valles 'जवाब में संशोधन करना, यह कैसे मैं ABPeoplePickerNavigationController की tableview का चयन रद्द है।

+0

अच्छा समाधान! –

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

  • कोई संबंधित समस्या नहीं^_^