Dies beantwortet die Frage nicht direkt, sondern nimmt eine Annahme über die Absicht der Frage an.
Wenn Sie eine Ansicht haben und in dieser Ansicht eine Methode für ein anderes Objekt aufrufen müssen, z. B. den Ansichtscontroller, können Sie stattdessen das NSNotificationCenter verwenden.
Erstellen Sie zuerst Ihre Benachrichtigungszeichenfolge in einer Header-Datei
#define SLCopyStringNotification @"ShaoloCopyStringNotification"
Rufen Sie aus Ihrer Sicht postNotificationName auf:
- (IBAction) copyString:(id)sender
{
[[NSNotificationCenter defaultCenter] postNotificationName:SLCopyStringNotification object:nil];
}
Dann fügen Sie in Ihrem View Controller einen Beobachter hinzu. Ich mache das in viewDidLoad
- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(copyString:)
name:SLCopyStringNotification
object:nil];
}
Implementieren Sie jetzt (auch im selben View Controller) Ihre Methode copyString: wie im obigen @selector dargestellt.
- (IBAction) copyString:(id)sender
{
CalculatorResult* result = (CalculatorResult*)[[PercentCalculator sharedInstance].arrayTableDS objectAtIndex:([self.viewTableResults indexPathForSelectedRow].row)];
UIPasteboard *gpBoard = [UIPasteboard generalPasteboard];
[gpBoard setString:result.stringResult];
}
Ich sage nicht, dass dies der richtige Weg ist, es scheint nur sauberer zu sein, als die Ersthelferkette hochzulaufen. Ich habe diesen Code verwendet, um einen UIMenuController in einer UITableView zu implementieren und das Ereignis wieder an den UIViewController zu übergeben, damit ich etwas mit den Daten tun kann.