objective c - IOS XMPP how to go next controller with particular username and chat -


i working on xmpp project. have completed login process , online ofline rosters. dont know how go next view controller particular user's field , chat him. here try. now have write in uitableview's delegate method

friendsviewcontroller.m file // fetch online , offline rosterlist    #pragma mark -tableview datasource method  - (nsinteger)numberofsectionsintableview:(uitableview *)tableview  {     return [[[self fetchedresultscontroller] sections] count]; }     - (cgfloat)tableview:(uitableview *)atableview heightforrowatindexpath:(nsindexpath *)indexpath { switch (indexpath.row){     case 0:         if(indexpath.section==0)             return 60.0; // first row 123pt high     default:         return 60.0; // other rows 40pt high  }  }    - (nsstring *)tableview:(uitableview *)sender titleforheaderinsection:(nsinteger)sectionindex { nsarray *sections = [[self fetchedresultscontroller] sections];    if (sectionindex < [sections count]) {     id <nsfetchedresultssectioninfo> sectioninfo = [sections objectatindex:sectionindex];     int section = [sectioninfo.name intvalue];     switch (section)     {         case 0  : return @"available";         case 1  : return @"away";         default : return @"offline";     } }  return @"";}    - (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)sectionindex{ nsarray *sections = [[self fetchedresultscontroller] sections];  if (sectionindex < [sections count])  {      id <nsfetchedresultssectioninfo> sectioninfo = sections[sectionindex];      return sectioninfo.numberofobjects;  } return 0;}      - (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath      {   static nsstring *simpletableidentifier = @"simpletableitem";    uitableviewcell *cell = [tableview dequeuereusablecellwithidentifier:simpletableidentifier];  if( cell == nil){         cell = [[uitableviewcell alloc] initwithstyle:uitableviewcellstylesubtitle reuseidentifier:simpletableidentifier];     }     xmppusercoredatastorageobject *user = [[self fetchedresultscontroller] objectatindexpath:indexpath];         cell.textlabel.text = user.displayname;             [self configurephotoforcell:cell user:user];    // cell.detailtextlabel.text= [self.tblchathistory objectatindex:indexpath.row];     cell.textlabel.textcolor=[uicolor whitecolor];     return cell;    }    #pragma mark - segue method   - (void)prepareforsegue:(uistoryboardsegue *)segue sender:(id)sender     {      if ([[segue identifier] isequaltostring:@"chathistory"])     {    creategroupviewcontroller *vc = [segue destinationviewcontroller];     }   }   - (bool)xmppstream:(xmppstream *)sender didreceiveiq:(xmppiq *)iq { nsxmlelement *queryelement = [iq elementforname: @"query" xmlns: @"jabber:iq:roster"]; if (queryelement) {     nsarray *itemelements = [queryelement elementsforname: @"item"];     (int i=0; i<[itemelements count]; i++)     {         nslog(@"friend: %@",[[itemelements[i] attributeforname:@"jid"]stringvalue]);         } } return no; }  - (nsfetchedresultscontroller *)fetchedresultscontroller { if (fetchedresultscontroller == nil) {     nsmanagedobjectcontext *moc = [[self appdelegate] managedobjectcontext_roster];      nsentitydescription *entity = [nsentitydescription entityforname:@"xmppusercoredatastorageobject"                                          inmanagedobjectcontext:moc];      nssortdescriptor *sd1 = [[nssortdescriptor alloc] initwithkey:@"sectionnum" ascending:yes];     nssortdescriptor *sd2 = [[nssortdescriptor alloc] initwithkey:@"displayname" ascending:yes];      nsarray *sortdescriptors = [nsarray arraywithobjects:sd1, sd2, nil];      nsfetchrequest *fetchrequest = [[nsfetchrequest alloc] init];     [fetchrequest setentity:entity];     [fetchrequest setsortdescriptors:sortdescriptors];     [fetchrequest setfetchbatchsize:10];      fetchedresultscontroller = [[nsfetchedresultscontroller alloc] initwithfetchrequest:fetchrequest                                                                    managedobjectcontext:moc                                                                      sectionnamekeypath:@"sectionnum"                                                                               cachename:nil];     [fetchedresultscontroller setdelegate:self];       nserror *error = nil;     if (![fetchedresultscontroller performfetch:&error])     {         ddlogerror(@"error performing fetch:= %@", error);         //nslog(@"error = %@", error);     } }  return fetchedresultscontroller;  }  - (void)controllerdidchangecontent:(nsfetchedresultscontroller *)controller { [[self tblvwbuddy] reloaddata];  } 

you can fetch user following way while showing in 1 screen means have jid of user, take user's jid , in next controller can filter user. here code filter porticular user xmppusercoredatastorageobject means of jid. in case friendjid jid filtered

- (xmppusercoredatastorageobject *)fetchtheuser {     nsmanagedobjectcontext *moc = [app_delegate managedobjectcontext_roster];      nsentitydescription *entity = [nsentitydescription entityforname:@"xmppusercoredatastorageobject"                                               inmanagedobjectcontext:moc];      nspredicate *pred = [nspredicate predicatewithformat:@"jidstr=%@",[self.friendjid lowercasestring]];     nsfetchrequest *fetchrequest = [[nsfetchrequest alloc] init];     [fetchrequest setentity:entity];     [fetchrequest setpredicate:pred];      nserror *error = nil;      [fetchrequest setpredicate:pred];     nsarray *fetchedobjects = [[app_delegate managedobjectcontext_roster] executefetchrequest:fetchrequest error:&error];      xmppusercoredatastorageobject *objtemp = fetchedobjects.count?[fetchedobjects objectatindex:0]:nil;      return objtemp; } 

hope you. accept answer if find useful


Comments