self.superview.title = @"i";
вычисляется в объект типа UIView
и UIView
не имеет title
собственности. UIViewController
s имеют parentViewController
имущество, но UIView
s не.
Таким образом, основная проблема заключается в том, что вы не должным образом разделяете свой контроллер и классы просмотра. То, что вы обычно делаете, - это представление, которое вы хотите захватить краны в подклассе UIControl
(какие вещи вроде UIButton
уже есть, но если это подклассу UIView
, тогда вы можете просто сменить его на подкласс UIControl
, так как UIControl
сам по себе является подкласс UIView
), то в контроллере добавить что-то вроде:
- (void)viewDidLoad
{
[super viewDidLoad];
// we'll want to know if the view we care about is tapped;
// we've probably set up an IBOutlet to it but any way of
// getting to it is fine
[interestingView
addTarget:self
action:@selector(viewTapped:)
forControlEvents:UIControlEventTouchDown];
// UIButtons use UIControlEventTouchUpInside rather than
// touch down if wired up in the interface builder. Pick
// one based on the sort of interaction you want
}
// so now this is exactly like an IBAction
- (void)viewTapped:(id)sender
{
self.title = @"My new title";
}
Таким образом, вы явно не вкладывают мнение с какими-либо знаниями о своей позиции в иерархии зрения или, как ваш вид контроллеры намерены действовать. Вы просто скажите, чтобы он дал вам крик, если он получит взаимодействие с пользователем.
Спасибо Tommy, thats отлично работает сейчас. Как вы посоветовали, я переместил весь элемент управления onclick в контроллер, и теперь представление просто обрабатывает чертеж. – user930731
UIResponder не является подклассом UIView. Это наоборот. –
@SaurabhG Действительно, я четко набрал 'UIResponder', где я имею в виду' UIControl'; Я исправлю. – Tommy